我又是我的怪异查询。
table users:
id | type | partner | company
------------------------------
1 | 2 | 0 | comp1
2 | 3 | 2 | comp2
3 | 3 | 2 | comp3
4 | 3 | 3 | comp4
table orders:
id | user | partner
--------------------
1 | 2 | 2
2 | 2 | 2
3 | 2 | 3
4 | 3 | 2
我知道跟踪所有这些数字有点麻烦。
我以type 2
(用户表)的身份登录,想从orders
中以users
列出type 3
表中的所有信息,这些信息列为我的{ {1}}另外,我还希望在结果中同时使用partners (partner 2)
company
中的users
名称。
该查询将在table
表上执行。
orders
请先谢谢您的理解,然后再问我。我会尽力解释得更好,也欢迎您进行任何使其更清晰的修改。
答案 0 :(得分:-1)
也许这
select s.id,
case when src = 'u' then s.users
else s.partner
end as users,
case when src = 'p' then s.users
else s.partner
end as partner,
u.company
from
(
select 'u' as src,id,users,partner from o where users = 2 and (users = partner)
union
select 'p',id,partner,users from o where partner = 2 and (users <> partner)
) s
join u on u.id = s.partner
where type = 3;
希望是自我解释,请注意,我只需要了解用户,查询就可以确定合作伙伴。
结果
+------+-------+---------+---------+
| id | users | partner | company |
+------+-------+---------+---------+
| 2 | 2 | 2 | comp2 |
| 1 | 2 | 2 | comp2 |
| 4 | 3 | 2 | comp3 |
+------+-------+---------+---------+
3 rows in set (0.00 sec)