我需要一个查询,选择一堆条目,然后与这些条目选择一堆行成一行。下面显示了一个典型的条目,以及典型的结果需要的样子。Sqlite选择多行成一行
table1
id
-------
3
table2
id value table1
--------------------------
5 value1 3
6 value2 3
table3
id value table1
-------------------------
9 value3 3
10 value4 3
table4
id table1
---------------
14 3
15 3
table5
id value table4
-------------------------------
19 value5 14
20 value6 14
21 value7 15
result
result1 result2 result3 result4
------------------------------------------------------
3 value1 value3 value5, value6; value7
只需要表1和表2的第一个结果。表2通常可以为null,value3需要进入result2。 目前,我选择了statment像下面只返回RESULT1每个条目,然后为每个条目我为每个结果做单独的查询
SELECT DISTINCT id FROM (
-complicated select in here
) AS temp;
然后每个ID可分离执行:
SELECT value FROM table2 WHERE table1 = id LIMIT 1;
SELECT value FROM table3 WHERE table1 = id LIMIT 1;
SELECT value, table4.id FROM table4, table5 WHERE table4.id = table5.table4 AND table1 = id;
并使用代码将其格式化为结果表格。
问题是只有第一个查询是在后台线程上完成的,而其余的都是在UI线程上完成的。我想在一个查询中完成所有操作,但是将table4划分为一行并且只选择了table2和table3的第一个结果。
应该如何计算结果?为什么'value2'和'value4'不显示? – 2013-03-16 10:07:28
'表2通常可以为null,value3需要进入result2'。此时你应该问自己,你的数据库设计是否合适。这里缺乏简单的引发红旗。 – Tim 2013-03-16 10:21:06
但是看看这个:IFNULL http://www.sqlite.org/lang_corefunc.html#ifnull – Tim 2013-03-16 10:23:37