我有两张桌子:
// bookmark
| id | user | title |
// bookmarkItem
| itemID | bookmarkId |
我尝试从一个用户的所有书签中进行选择,并计算其中有多少项。 我有半个工作sql:
SELECT
bookmark.id,
bookmark.title,
COUNT(bookmarkItem.itemId) AS count
FROM
bookmark
INNER JOIN bookmarkItem ON bookmark.id = bookmarkItem.bookmarkId
WHERE
bookmark.user = 'username'
GROUP BY
bookmark.id
但是它没有用bookmarkItem-s写出书签。我想要的是显示行,如:
| id | title | count |
|----|-------|-------|
| 12 | asdfg | 15 |
| 13 | asdfh | 0 |
| 14 | asdfj | 145 |
答案 0 :(得分:2)
这是因为您只选择具有匹配书签项目的书签。 (这是 INNER JOIN 的工作原理。您需要 OUTER JOIN 。)
更改
INNER JOIN
到
LEFT JOIN
以便获得没有书签项目的书签。
答案 1 :(得分:0)
在书签表上使用LEFT JOIN。这将给出书签表中的所有记录,即使bookmarkItem没有任何匹配的记录。