2011-03-27 48 views
0

我在這裏有兩個查詢。
第一個表示將貓鏈接= 3兩個查詢和兩個內部聯接在一起

Select * 
    from Listings 
    JOIN Category ON Listings.Category = Category.CategoryID 
WHERE Link = '3' 

,第二個顯示了清單連接到帳戶列表。

SELECT * 
    FROM Listings 
    JOIN Accounts ON Listings.Account_ID = Accounts.Account_ID 

我的嘗試是這樣的:

SELECT * 
    FROM (Select * 
      from Listings 
      JOIN Category ON Listings.Category = Category.CategoryID 
     WHERE Link = '3') 
    JOIN Accounts ON Listings.Account_ID = Accounts.Account_ID 

但是,這似乎並沒有工作,任何解決方案?

回答

0

你能發佈錯誤嗎?錯誤最可能告訴你所有的表都必須有名字。這意味着你爲臨時表做的子選擇必須有一個表別名。

SELECT * FROM (Select * from Listings INNER JOIN Category ON Listings.Category = Category.CategoryID WHERE Link = '3') as T1 INNER JOIN Accounts ON T1.Account_ID=Accounts.Account_ID; 
+0

謝謝,這是什麼我在尋找。我必須在內部查詢中更改*以使所有字段(Listings.Listing_ID等) – Kenny 2011-03-27 23:34:07

2

會是這樣的工作?

SELECT  Listings.* 
FROM  Listings 
INNER JOIN Accounts ON Listings.Account_ID = Accounts.Account_ID 
INNER JOIN Category ON Category.CategoryID = Listings.Category 
WHERE  Link = '3' 

沒有指定哪個表「鏈接」是的,所以如果您使用此代碼(前提是你想要做什麼),我建議你指定表中的「鏈接」字段在像這樣:WHERE TableName.Link = '3'

+0

第二個連接條件應該是:'ON Category.CategoryID = ** Listings **。 – 2011-03-27 23:40:49

+0

@ypercube - 謝謝,更新:) – 2011-03-27 23:45:40

2

WHERE ...應該去兩個連接。

您可以SELECT Listings.*顯示來自表,列出所有字段,或SELECT *顯示所有領域的所有3個連接表,或SELECT Listings.*, Accounts.*從這些2個表顯示等

SELECT * 
FROM Listings l 
    INNER JOIN Category c 
    ON l.Category = c.CategoryID 
    INNER JOIN Accounts a 
    ON l.Account_ID = a.Account_ID 
WHERE c.Link = '3' 
; 
+0

+1:在OP問題中不需要派生表/內聯視圖 – 2011-03-27 23:37:06