0

私はかなり好奇心旺盛な 2 つのテーブルのセットアップを持っています。

テーブル A: 複数の列がありますが、基本的には情報の集まりです。言う:

------------------------------------
my_id| name | address | lat | long 

表 B は、表 A の要素間の関係の長いリストです。たとえば、次のとおりです。

------------------
my_id | parent_id

私がやりたいことは次のとおりです。

任意の A.my_id について、A.my_id を B.parent_id として持つ B.my_id のリストを取得し (存在しない場合もあります)、次のようにします。

このリスト (取得したばかり) の各要素について、テーブル A からこれらの ID の緯度と経度を取得し、それらから 2 つの配列を作成します。

誰かが私を正しい方向に向けることができますか? 私は SQL にかなり慣れていないので、今まではうまくいっていましたが、これは本当に私を困惑させます。

ありがとう!

4

1 に答える 1

0
SELECT results.lat, results.long 
FROM a 
JOIN b 
    ON b.parent_id=a.my_id 
JOIN a AS results 
    ON results.my_id=b.my_id
WHERE a.my_id = 'the one I'm looking for'

選択した列を 1 分間無視すると、クエリは、探している特定の ID に一致するテーブル A の行を取得し (where 句を参照)、ID と同じ親 ID を持つ B の行と結合します。もう一度探して、テーブル A と再び結合します。今回は、B の ID と一致する ID を持つ行です。

テーブルが次のようになっている場合:

TABLE A
my_id| name | address | lat | long
  1    ABC    1234      10     20
  2    DEF    5678      15     19
  3    GHI    9101      17     21
  4    JKL    1121      18     18
 ...

TABLE B
my_id|parent_id
  1      4
  3      4
 ...

このクエリを実行すると:

SELECT *
FROM a 
JOIN b 
    ON b.parent_id=a.my_id 
JOIN a AS results 
    ON results.my_id=b.my_id
WHERE a.my_id = 4

次の結果が得られるはずです。

a.my_id | a.name | a.address | a.lat | a.long | b.my_id | b.parent_id | results.my_id | results.name | results.address | results.lat | results.long
   4       JKL       1121       18       18        1          4             1             ABC                   1234           10             20
   4       JKL       1121       18       18        3          4             3             GHI                   9101           17             21

そこからSELECT、結果がどのように見えるかに影響するように列を変更するだけです。

ここでのコツは、 の 2 か所で同じテーブル (A) を使用することJOINです。

于 2013-01-23T01:46:00.557 に答える