2

我有一个有趣的挑战......我有两张桌子,productsusers

products包含 2 列user_idcurrent_bidder,它们包含表中的两个不同 ID users

我想从 中选择所有列,并从表中为每个和选择products名称和评级。usersuser_idcurrent_bidder

本质上,我正在尝试从连接表的两个不同行中选择列,同时消除它们的名称的歧义。

任何帮助将不胜感激。

4

2 回答 2

4

加入用户表两次,并给每个副本一个不同的别名。像这样的东西:

select p.name, p.weight, owner.name, bidder.name
from   product p
join   user owner
on     ...
join   user bidder
on     ...
于 2012-09-23T23:57:43.123 回答
0

避免列之间歧义的好方法是在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使用,产品将永远不会显示在结果中,直到有投标人。

于 2012-09-24T00:17:33.680 回答