【问题标题】:Creating a view of unused videos in a month period in mysql在mysql中创建一个月内未使用视频的视图
【发布时间】:2021-08-11 18:37:27
【问题描述】:

再次向社区问好。

这一次,我尝试创建当月所有未借出的视频的视图。该表具有以下结构:

transaction c_id v_id loan_date return_loan rental_value period
1 3 2 2021-08-10 2021-08-12 10.00 2021-08

而且它继续被填充......

所以我正在使用以下代码生成视图:

CREATE VIEW `Video not rented` AS 
SELECT  loan.period, loan.v_id, COUNT(*) AS amount
FROM loan 
WHERE amount = 0
GROUP BY loan.v_id;

但我收到以下错误:

0 146 13:29:13 错误代码:1111。无效使用组函数 0.000 秒

非常感谢任何帮助

【问题讨论】:

  • 您的问题不清楚。如前所述,您似乎需要一个有子句,但“金额”字段未列在您帖子的结构中。

标签: mysql sql view


【解决方案1】:

这个 owulf 向您展示了一段没有被借出的视频

CREATE VIEW `Video not rented` AS 
SELECT  loan.period, loan.v_id, COUNT(*) AS amount
FROM loan 
GROUP BY loan.v_id,loan.period
HAVING  amount = 0;

你可以用来获取最后一个时期

CREATE VIEW `Video not rented` AS 
SELECT  MAX(loan.period), loan.v_id, COUNT(*) AS amount
FROM loan 
GROUP BY loan.v_id
HAVING  amount = 0;

【讨论】:

    【解决方案2】:

    您可以使用left join。假设您有一个视频表:

    CREATE VIEW videos_not_rented_this_month
        SELECT v.*
        FROM videos v LEFT JOIN
             loan l
             ON l.v_id = v.v_id AND
                l.loan_date >= curdate() + interval (1 - day(curdate())) day
        WHERE l.v_id IS NULL;   -- videos with no match
    

    【讨论】:

    • 我也有一个视频表。我会试试看它是如何工作的
    • 似乎语法抛出错误,因为 curdate() + 期望 1 来查看我想在哪种格式中看到 curdate()。curdate() = YYYY-MM-DD / curdate() + 1 = YYYYMMDD
    • @JuanPabloClavijo 。 . .我修正了错字(缺少结束括号)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 2011-08-06
    相关资源
    最近更新 更多