我对SQL非常陌生,虽然对多对多和一对多等基本概念比较熟悉,但我不太清楚这种设置最适合使用哪种配置:基本上,我有一个人员表,还有一个单独的表,将每个人与其他几个人联系起来。我希望能够在主表上选择人员/条目,并自动显示他们链接到的所有人员。这两个表如下所示:
Person Table
1-John
2-Tom
3-Mary
4-Bob
5-Susy
Links Table
PersonA-PersonB
1-2
1-3
1-4
3-2
3-4
Display John and all links...
John
Tom
Mary
Bob我不是在寻找一个拼写出来的查询或类似的东西。只是一些关于我应该学习什么样的设置的建议,以便设置它。我知道这是一个非常基本的概念,但尽管我做了这么多研究,我仍然觉得这个问题非常令人困惑,这就是为什么我要问这个问题。
发布于 2017-01-08 03:14:57
select 'John'
union all
select p2.person_name
from Person as p1
join ( select PersonA,PersonB from Links
union select PersonB,PersonA from Links
) as l
on p1.person_id = l.PersonA
join Person as p2
on p2.person_id = l.PersonB
where p.person_name = 'John'( select PersonA,PersonB from Links
union select PersonB,PersonA from Links
) as l可能会更改为
( select PersonA,PersonB from Links
union all select PersonB,PersonA from Links
) as l或
Links as l取决于您的数据
https://stackoverflow.com/questions/41523882
复制相似问题