我有一个有趣的挑战......我有两张桌子,products
和users
。
products
包含 2 列user_id
和current_bidder
,它们包含表中的两个不同 ID users
。
我想从 中选择所有列,并从表中为每个和选择products
名称和评级。users
user_id
current_bidder
本质上,我正在尝试从连接表的两个不同行中选择列,同时消除它们的名称的歧义。
任何帮助将不胜感激。
加入用户表两次,并给每个副本一个不同的别名。像这样的东西:
select p.name, p.weight, owner.name, bidder.name
from product p
join user owner
on ...
join user bidder
on ...
避免列之间歧义的好方法是在ALIAS
其上添加一个。
SELECT a.*, -- selects all records from products
b.name AS user_name, -- user_name is an alias of users.name (user_id)
c.name AS bidder_name -- user_name is an alias of users.name (current_bidder)
FROM products a
LEFT JOIN users b
ON a.user_id = b.id
LEFT JOIN users c
ON a.current_bidder = c.id
我使用的原因LEFT JOIN
是因为我认为有些产品还没有bidder
。如果INNER JOIN
使用,产品将永远不会显示在结果中,直到有投标人。