2013-08-01 94 views
0

我有這個SQL請求應該將兩個子查詢的結果與INNER JOIN合併,但出現錯誤,我不知道爲什麼。請問你能幫幫我嗎?使用INNER JOIN訪問2010 FROM FROM子句中的兩個SQL查詢

SELECT 
     dateT, PC.id_serie 
FROM (
     SELECT id_serie, MIN(dateF) as dateF FROM fixings GROUP BY id_serie 
) AS PC1 
INNER JOIN 
(
     SELECT target_calendar.dateT, series.id_serie FROM target_calendar, series LEFT JOIN fixings ON (PC.DateT=fixings.dateF) AND (PC.id_serie = fixings.id_serie) 
) AS PC 
ON 
     PC1.dateF = PC.dateT 
AND 
     (((pc1.[dateF]) Is Null)) 
AND 
     DateT <= Date(); 

錯誤:造成別名「DateF」循環引用

回答

1

其實答案是增加更多的「(」並沒有把別名AS dateF爲戈登·利諾夫建議(它導致一個循環引用)

在這裏,您已經最終SQL查詢:

SELECT 
      dateT, PC.id_serie 
    FROM (
      SELECT id_serie, MIN(dateF) FROM fixings GROUP BY id_serie 
    ) AS PC1 
    INNER JOIN 
    (
     (
      SELECT target_calendar.dateT, series.id_serie FROM target_calendar, series 
     ) AS PC LEFT JOIN fixings ON (PC.DateT=fixings.dateF) AND (PC.id_serie = fixings.id_serie) 
    ) 
ON 
    (
     PC1.dateF = PC.dateT 
) 
    WHERE 
     fixings.dateF Is Null 
    AND 
      DateT <= Date(); 
0

至少有一個問題是,你沒有定義PC1.DateFwhere子句中也有fixings.DateF,但在該範圍內沒有稱爲fixings的表別名。您需要在第一個子查詢列別名:

SELECT 
     dateT, PC.id_serie 
FROM (
     SELECT id_serie, MIN(dateF) as dateF FROM fixings GROUP BY id_serie 
) AS PC1 
INNER JOIN 
(
     SELECT target_calendar.dateT, series.id_serie FROM target_calendar, series LEFT JOIN fixings ON (PC.DateT=fixings.dateF) AND (PC.id_serie = fixings.id_serie) 
) AS PC 
ON 
     PC1.dateF = PC.dateT 
AND 
     (((pc1.[dateF]) Is Null)) 
AND 
     DateT <= Date(); 

您還混合舊式連接和新風格的第二子查詢from子句中的聯接。這些應該都是新式聯接。

+0

同樣的結果:。在Syntaxe錯誤JOIN操作然後,他選擇'從第一子查詢 –

+0

@Yumino fixings'我得到了在重新閱讀,所以這個問題指出 –

+0

另一個錯誤出現了:加入表達式不支持,然後他選擇'((((PC1。[dateF])爲空))'即使使用相同的'JOIN'風格 –