我需要一個查詢,選擇一堆條目,然後與這些條目選擇一堆行成一行。下面顯示了一個典型的條目,以及典型的結果需要的樣子。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