我试图在约会中获得零作者,但我只得到那些卖出的作品。
SELECT v.author_name, COUNT(*)
FROM bookssold s
LEFT JOIN authors v ON s.author_id = v.author_id
WHERE s.price = 19
AND DATE(s.purchase_date) BETWEEN '2009-01-20' AND DATE(NOW())
GROUP BY s.author_id
这应该根据其他帖子工作。
v是具有id和名称的作者表
是与作者ID,价格和购买日期一起出售的书籍
答案 0 :(得分:2)
你的问题有点不清楚,但现在就去了。
如果ss
是销售记录,vd
是作者姓名/ ID,并且您想要一个包含每位作者的列表,无论他是否有销售,如果有销售,然后你在LEFT JOIN
开启了表格。相反,你想要
...
FROM vd
LEFT JOIN ss ON ss.id = vd.id
...
或者你可以按照你的顺序保留它们并使用RIGHT JOIN
,但我认为LEFT
更有意义。
如果您希望结果显示为零而不是NULL
,则必须使用CASE
或其他内容,但这是一个单独的问题。
我建议尝试以下方法:
SELECT v.author_name, COUNT(*)
FROM authors v
LEFT JOIN bookssold s
ON s.author_id = v.author_id
AND s.price = 19
AND DATE(s.purchase_date) BETWEEN '2009-01-20' AND CURDATE()
GROUP BY v.author_id;