1

私は2つのテーブルを持っています:

person table                            accident table  

pid name    phone                    acc_id pid type
1   Mike    3123223232                  132 1   car
2   Kyle                                133 3   snow
3   Nick    3124567654                  134 4   cold
4   John    3124566663                  135 2   sun
5   Pety    4234345453                  136 3   hot
                                        137 2   sun
                                        138 3   snow
                                        139 2   cold
                                        140 1   hot

同じ人が有効な電話番号を持っている場合、同じ人に発生したすべての事故acc_idを互いに参照して見つける必要があります

したがって、結果は次のようになります。

acc_id  reference
133     136
133     138
136     133
136     138
138     133
138     136
132     140
140     132

つまり、pid = 3事故133, 136, 138を起こした人が で、この人が を持っているphoneので、この 3 人acc_idはお互いを参照しています。次に、pid = 2事故も3回ありましたが、電話番号が不明なので含めていません。次に、pid = 12 つの事故が132, 140あり、彼女は電話番号を持っているので、彼女の事故番号を含めます。

これを行うためのクエリを作成する方法を知っていますが(スペースのために含めませんでした)、これらのテーブルを2回結合することが含まれており、より効率的な方法が必要だと思います。誰でも私を助けることができますか?

4

1 に答える 1

1

このようなものはどうですか?(これがあなたがすでに持っていたものかどうかはわかりません)

select acc1.acc_id, acc2.acc_id as reference 
from accidents acc1
inner join accidents acct2 on acc1.pid = acc2.pid and acc1.acc_id <> acc2.acc_id
inner join people on people.pid = acc1.pid
where people.phone <> ""
于 2013-10-10T21:17:24.193 に答える