こんにちは、「Case with multiple columns」の質問を調べましたが、これと同じものが見つからないので、質問する必要があると思います。
基本的に、結合したい 2 つのテーブル (どちらもサブクエリの結果) があります。それらは同じ列名を持っています。それらをIDで結合すると、SELECT *
各行が次のようになります。
A.id, A.x, A.y, A.z, A.num, B.id, B.x, B.y, B.z, B.num
私が欲しいのは、num の値が小さいテーブルの列のみを選択する方法です。したがって、この場合、結果テーブルには常に 5 つの列があり、事後にどのテーブルから来たid, x, y, z, num
かは気にしません。id, x, y, z, num
また、どちらのテーブル結果も同じであれば問題ありません。
SELECT CASE WHEN A.num < B.num THEN A.* ELSE B.* END FROM A JOIN B ON A.id=B.id
完璧ですが、CASEステートメントで1つの列しか返すことができず、すべての列にCASEを使用できますが、それは非常に無駄に思えます(実際のデータベースの各テーブルには8つあるため、8つのCASEステートメントがあります)。
これはところでSQLiteです。どんな助けでも大歓迎です!
A と B の詳細については、編集してください: A と B は、次のようなクエリから取得されます。
SELECT "考えられたケースのステートメントがここに入る可能性があります" FROM
(SELECT id, x, y, z, num FROM Table1 a JOIN Table2 b ON a.id=b.id AND (y BETWEEN (53348574-3593) AND (53348574+3593)) AND (z BETWEEN (-6259973-6027) ) AND (-6259973+6027)) JOIN Table3 c ON c.id= b.id GROUP BY a.id, cr) A
加入
(SELECT id, x, y, z, num FROM Table1 a JOIN Table2 b ON a.id=b.id AND (y BETWEEN (53401007-3593) AND (53401007+3593)) AND (z BETWEEN (-6397286-6027) ) AND (-6397286+6027)) JOIN Table3 c ON c.id= b.id GROUP BY a.id, cr ) B ON A.id=B.id
そのため、地理位置情報に基づいて作成された 2 つのテーブルを結合します。なぜ大きな数字なのか疑問に思っている場合は、いずれかの場所で見つかった属性に基づいて、どちらのテーブルからデータを取得するかを決定する必要があります。