1

我有两张桌子:

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,因此这三个acc_id是相互指代的。接下来,pid = 2也发生了三起事故,但由于她的电话号码未知,我们不包括她。接下来,pid = 1发生了两次事故132, 140,她有一个电话号码,所以我们包括她的事故号码。

我知道一种如何编写查询来执行此操作的方法(为了空间我没有包括在内),但它包括两次加入这些表,我认为必须有一种更有效的方法。有谁能够帮助我?

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 回答