子查询中的SQLite连接表

时间:2016-11-14 19:49:37

标签: android database sqlite join subquery

我在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中执行此操作。可能吗?如何编写查询?

2 个答案:

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

使用correlated subquery

可以实现这一点
SELECT ID,
       Name,
       (SELECT COUNT(*)
        FROM Table2
        WHERE Department = Table1.ID
       ) AS Entries
FROM Table1;