我不确定这是否可能在SQLite中(对于Android应用程序)是否可能实现,并且可能不支持sqlite不支持的INNER JOIN
或OUTER JOIN
。
我正在尝试在两个表之间输出JOIN
的值,其中包括一个表中的字段数:
[Table1]
ID Title
1 "Title 1"
2 "Title 2"
3 "Title 3"
[Table2]
ID PID Title New
1 1 "Title 1a" 0
2 2 "Title 2a" 1
3 2 "Title 2b" 1
4 3 "Title 3a" 0
5 3 "Title 3b" 0
Desired output:
1 0 "Title 1"
2 2 "Title 2"
3 0 "Title 3"
我所拥有的:
SELECT Table2.pid,count(Table2.pid),Table1.title
FROM Table1
JOIN Table2
ON Table2.pid = Table1.id
WHERE Table2.new = 1
GROUP BY Table2.pid
输出:
2 2 "Title 2"
答案 0 :(得分:2)
您可以通过在子查询中进行汇总来获取所需的值:
select
(select count(*) from Table2 t2 where t2.pid = t1.id and t2.New = 1) counter,
t1.Title
from
Table1 t1
请参见demo
分组依据的另一种解决方案:
select
count(t2.Title) counter,
t1.Title
from Table1 t1
left join (
select * from Table2 where new = 1
) t2
on t2.pid = t1.id
group by t1.Title
请参见demo
答案 1 :(得分:0)
您可以使用sqlite中的LEFT JOIN进行操作。只需将JOIN
更改为LEFT JOIN
。来自the doc:
如果加入操作员是“ LEFT JOIN”或“ LEFT OUTER JOIN”,则在 如果应用了ON或USING过滤子句,则额外一行 添加到原始左侧输入中每一行的输出中 组合数据集中根本没有行的数据集 (如果有)。添加的行的列中包含NULL值, 通常包含从右侧输入数据集中复制的值。
当Table2中没有行时,它将返回null。 (也许您可以使用CASE
语句显示0,但我对界面不熟悉。)