2013-05-07 48 views
1

所以我有這樣的:無效的SQL

SELECT p.plantnaam,o.levcode,o.offerteprijs 
FROM plant p, offerte o 
JOIN (SELECT plantcode , MIN(offerteprijs) AS offprijs 
     FROM offerte 
     GROUP BY plantcode) s 
    ON s.plantcode = p.plantcode 
    AND s.offprijs = o.offerteprijs 
ORDER BY p.plantnaam,l.levcode 

Appearently在第6行,p.plantcode突然奇蹟般地一個無效的標識符。爲什麼是這樣?爲什麼在這之前所有其他人完全從同一張桌子上完美地出發?

回答

5

問題是你在混合JOIN。您有隱式和顯式聯接。帶有ON子句的顯式JOIN語法優先於隱含的逗號連接。因此,plantofferte表的別名在ON子句中將不可用。嘗試使用遍及相同JOIN類型:

SELECT p.plantnaam, o.levcode, o.offerteprijs 
FROM 
(
    SELECT plantcode , MIN(offerteprijs) AS offprijs 
    FROM offerte 
    GROUP BY plantcode 
) s 
INNER JOIN plant p 
    ON s.plantcode = p.plantcode 
INNER JOIN offerte o 
    ON s.offprijs = o.offerteprijs 
ORDER BY p.plantnaam, l.levcode 
+0

那麼,爲什麼這一個完美的工作?:'選擇p.soort,p.plantnaam,p.hoogte 從設備P JOIN(SELECT soort,MAX(hoogte) AS hoogste 從植物 GROUP BY soort)■ ON s.soort = p.soort AND s.hoogste = p.hoogte ORDER BY p.soort ' – Smileynator 2013-05-07 22:39:31

+0

@Smileynator因爲你是不是在一個逗號連接表那個。您正在該版本中使用ANSI連接語法。 – Taryn 2013-05-07 22:40:35

+0

哦,你的意思是在我的FROM聲明中,我只有1個表格而不是多個表格? – Smileynator 2013-05-07 22:43:16