2013-01-22 29 views
1

我試圖加入2個表來獲取匹配值,但我得到了模棱兩可的條款,不明確的條款加入

我的代碼是在這裏

SELECT * 
FROM auction_media 
    JOIN auctions 
    ON auction_id = auction_id 
    WHERE media_type = '3' 

我的表結構的一個例子可以這裏找到 被列在條款「auction_id」的錯誤是不明確的

http://sqlfiddle.com/#!2/13583

我應該怎麼做解決這個問題?

回答

4

試試這個

SELECT * 
FROM auction_media 
JOIN auctions 
ON auction_media.auction_id = auctions.auction_id 
WHERE media_type = '3' 
0
SELECT * 
FROM auction_media 
    JOIN auctions 
    ON auction_media.auction_id = auctions.auction_id 
    WHERE media_type = '3' 
1
SELECT * 
FROM auction_media 
    JOIN auctions 
    ON auction_media.auction_id = auctions.auction_id 
    WHERE media_type = '3' 
1

你需要你的別名表。問題是由於多列具有相同的名稱而引起的,在這種情況下,您嘗試加入的名稱相同。嘗試

SELECT * 
FROM auction_media AS am 
    JOIN auctions AS a 
    ON am.auction_id = a.auction_id 
    WHERE media_type = '3' 

更新:我混淆他們,使之更短,更readabile,但另一種選擇是使用全TABLE.COLUMN名稱,如auction_media.auction_id

或者你可以使用「USING」而不是

SELECT * 
FROM auction_media 
    JOIN auctions 
    USING (auction_id) 
    WHERE media_type = '3' 
+0

它不應該是'am.auction_id'在第一個例子嗎? – asprin

+0

你是對的,這是一個錯字。謝謝。 –

0

只需根據表名稱引用列名。

SELECT * FROM auction_media am JOIN auction a ON am.auction_id = a.auction_id 
WHERE media_type = '3' 
0

這樣做:

SELECT * FROM auction_media JOIN auctions ON auction_media.auction_id = auctions.auction_id WHERE media_type = '3' 

SQL JOIN