我在SQLite表中有以下方案(表1):
ID NAME
---------------------------------
1 "NAME 1"
2 "NAME 2"
... ...
表中的Id是另一个表中的外键,如此表(表2):
ID NAME DEPARTMENT (FROM TABLE 1)
------------------------------------------------------------
1 "PRODUCT 1" 2
2 "PRODUCT 2" 2
3 "PRODUCT 3" 1
我需要返回一个查询,其中包含表1中的所有元素以及一个名为&#34的新列;产品"这是表2中Department = Table1.ID。
的所有条目的计数结果看起来像这样
ID NAME ENTRIES
---------------------------------------------
1 "NAME 1" 1 (SELECT COUNT FROM TABLE 2 WHERE DEPARTMENT = 1)
2 "NAME 2" 2 (SELECT COUNT FROM TABLE 2 WHERE DEPARTMENT = 2)
我不知道如何在SQLite中执行此操作。可能吗?如何编写查询?
答案 0 :(得分:1)
通过第一个表列连接第二个表和组。
对结果进行分组时,count()
等聚合函数将应用于每个组,而不是完整的结果集。
select t1.id, t1.name, count(t2.id) as entries
from table_1 t1
left join table_2 t2 on t1.id = t2.department
group by t1.id, t1.name
答案 1 :(得分:1)
SELECT ID,
Name,
(SELECT COUNT(*)
FROM Table2
WHERE Department = Table1.ID
) AS Entries
FROM Table1;