为什么我的左连接不工作显示零?

时间:2013-12-02 21:22:06

标签: mysql

我试图在约会中获得零作者,但我只得到那些卖出的作品。

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,价格和购买日期一起出售的书籍

1 个答案:

答案 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;