2012-10-04 43 views
0

我有以下表格:SQL查詢與伯爵

列表

  • ID - 關鍵

項目

  • ID - 關鍵

LIST_ITEM

  • LIST_ID - 外鍵列出表
  • ITEM_ID - 外鍵項目表

我有以下查詢:

SELECT l.id, l.name 
FROM list l, list_item li 
WHERE l.id = li.list_id 

我要添加到結果集,在列表中的項目數。我該怎麼做呢?

+0

你嘗試過加入'COUNT()'到您的查詢?也請添加一些示例數據和預期結果。 – Taryn

回答

4
SELECT l.id, l.name, COUNT(li.item_id) AS item_count 
FROM list l 
LEFT JOIN list_item ON l.id = li.list_id 
GROUP BY l.id 
+1

不應該將'l.name'作爲GROUP BY子句的一部分嗎? – Vikdor

+0

'l.id'是'list'的關鍵,爲什麼'l.name'是GROUP BY子句的一部分? – xdazz

+0

似乎在MySQL中是有效的(但SQL Server抱怨除了那些應用了聚合函數的列以外的所有列必須位於GROUP BY列表中)。對不起虛驚! – Vikdor

1

試試這個:

SUM(l.id = li.list_id) 
+0

你是不是要說'COUNT'而不是'SUM'? – Vikdor

+0

我認爲'SUM'在這裏工作得很好,'COUNT'應該可以工作,但SUM更靈活... – sashkello