2012-02-02 56 views
0

工作我試圖寫這個SQL:左聯接不能與子查詢

SELECT 
    a.a_id as aid, 
    b.b_id as bid , 
    c.title 
FROM b , 
    (SELECT 
     a.a_id 
    FROM a 
    WHERE a.type = '2' 
    ) AS a 
LEFT JOIN c ON b.b_id = c.c_id 

如果我不付諸LEFT參考JOIN或選擇c,那麼它的工作原理。如果我確實放置了左連接,那麼我得到的錯誤是b.b_id是未知列。爲什麼我不能在這裏或更具體地使用左連接,爲什麼表b中的任何列未知?聲明的第一部分是表b中的正常選擇,爲什麼它不能找到那些列?

您何時使用子查詢與內部聯接?在這個例子中:

  • 表一個包含固定長度的標誌(一堆整數)與約主題的信息
  • 表C中包含的東西等的主題標題等
  • 表B包含類別信息。

我想要完成的是拉出某種類型的所有類別(表格a),並且拉出所有的標題(表格c),其中類別id與它爲主題ID(表b)。

回答

1

如果您交換表 「一」 與 「B」 的SQL編譯(但是這是否給出結果你追求?):

SELECT 
    a.a_id as aid, 
    b.b_id as bid, 
    c.title 
FROM 
    (SELECT 
     a.a_id 
    FROM a 
    WHERE a.type = '2' 
    ) AS a, b 
LEFT JOIN c ON b.b_id = c.c_id 
+0

感謝那些做到了! – phpmeh 2012-02-02 22:54:30

+0

不客氣。即使是一隻盲松鼠,偶爾也會發現一顆堅果。 – 2012-02-02 22:57:04

1

試試這個

SELECT 
    a.a_id as aid, 
    b.b_id as bid , 
    c.title 
FROM b INNER JOIN 
    (SELECT 
     a.a_id 
    FROM a 
    WHERE a.type = '2' 
    ) AS a 
LEFT JOIN c ON b.b_id = c.c_id