我正在尝试加入以下表格:
此表包含用户之间的关系。一个用户可以与许多其他用户相关。
我正在尝试选择一个用户,然后找到其相关的用户和联系人。 我试图使用联接,我成功地获得联系人或用户,但不是两者。
我使用了以下查询:
select
contacts.id as contact_id,
users.id as user_id,
pivot.user_id2 as user2_id
from
`contacts`
inner join `users` on `contacts`.`user_id` = `users`.`id`
inner join `pivot` as `pivot` on `pivot`.`user_id` = `contacts`.`user_id`
假设我在表格中有以下数据
用户:
id name 1 Sahil 2 Shubham 3 Xyz
数据透视表数据
user_id user_id2 1 2
通讯录表格数据
id user_id name 1 1 Abc 2 1 XYZ
现在查询的内容是
contact_id user_id user_id2 1 1 2 2 1 2
但我需要的是
contact_id user_id user_id2 1 1 null 2 1 null null 1 2
我无法弄清楚我在做什么。
由于
答案 0 :(得分:0)
请改为尝试:
SELECT B.id as contact_id, A.id as user_id, C.user_id2 as
user2_id
FROM `users` A LEFT JOIN `contacts` B
ON A.`id`=B.`user_id` LEFT JOIN `pivot` C
ON A.`id`=C.`user_id`;
有关使用联接的见解,请参阅MySQL Join Made Easy。
答案 1 :(得分:0)
onStartCommand()
答案 2 :(得分:0)
我自己解决了这个问题,使用了Union来获得理想的结果。
感谢您的支持。
答案 3 :(得分:0)
您似乎希望查询显示不相关的数据:
我建议两个单独的查询。如果要在一个查询中执行此操作,请使用UNION ALL
组合两个查询结果:
select contact_id, user_id, null as user_id2 from contacts
union all
select null as contact_id, user_id, user_id2 from pivot_table;