我的问题是下一个问题。MySQL从同一组外部表中获得行对
我有3个表:人,车和驱动:
人:
Id Name
1 | Tom
2 | James
3 | Charles
4 | Eric
5 | Thomas
6 | Robert
7 | Kim
8 | Ellias
汽车:
Id Name
1 | Ford
2 | Nissan
3 | Hyundai
驱动:
PID CID (People ID & Car ID)
1 | 1
2 | 1
5 | 1
5 | 2
6 | 1
6 | 2
7 | 1
7 | 2
7 | 3
8 | 1
我想要检索驾车的人同一套汽车。 我的意思是:如果汤姆只驾驶福特和詹姆斯驾驶也只是福特,我想把这对汤姆/詹姆斯作为结果返回。此外,我想包括没有驾驶任何车的人(即查尔斯/埃里克(0辆车都驱动))。
与示例中的查询结果上面应该返回两列每个结果,例如:
Name Name
Tom | James (Only Ford)
Tom | Ellias (Only Ford)
James | Ellias (Only Ford)
Charles | Eric (None BOTH)
Thomas | Robert (Ford and Nissan BOTH)
还要注意,金带动福特,日产和现代。所以Kim不会与任何人配对。汤姆詹姆斯和埃利亚斯都是福特驾驶,所以他们与自己配对。
我试过笛卡尔产品和关系部门,但我没有找到解决方案。如果有人能够帮助我至少有一个提示,我会很感激。谢谢!
您可以在样本数据和正确的预期结果中添加Charles和Eric。另外根据'Drived'表中的第三条记录,'Tom'开车'日产'以及为什么你提到*汤姆驱车只福特* –
固定并添加整个示例 – ricaso
试试这个SELECT GROUP_CONCAT(p.name)作为人,c.name从驱动为d加入人作为p上p.id = d.PID加入汽车作为c上c.id = d.CID组d.CID – Shibon