一連のエントリを選択し、それらのエントリを使用して一連の行を単一の行に選択するクエリが必要です。典型的なエントリと、典型的な結果がどのように見える必要があるかを以下に示します。
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 に入る必要があります。現時点では、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 スレッドで実行されることです。すべてを 1 つのクエリで実行したいのですが、table4 を 1 行にまとめられず、table2 と table3 の最初の結果のみを選択するのに問題があります。