2

興味深い課題があります...テーブルが 2 つproductsあり、users.

productsには、テーブルからの 2 つの異なる ID を保持するuser_idとの 2 つの列が含まれます。current_bidderusers

からすべての列を選択し、それぞれのテーブルproductsから名前と評価を選択したいと思います。usersuser_idcurrent_bidder

基本的に、名前を明確にしながら、結合されたテーブルの 2 つの異なる行から列を選択しようとしています。

どんな助けでも大歓迎です。

4

2 に答える 2

4

user テーブルに 2 回参加し、それぞれのコピーに異なるエイリアスを与えます。このようなもの:

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 に答える