2011-07-28 123 views
0

我有2個表格,一個顯示客戶地址,另一個顯示所有訂單數據。我想用JOIN查詢這兩個表格,這樣我就可以得到一個結果集,將所有的電子郵件地址都轉發給那些在去年沒有訂購的客戶。SQL INNER JOIN語句幫助

到目前爲止,我有這個,但我的內連接不能正常工作,如果你可以幫助:

SELECT SHH.CUST_NO,ADR.EMAIL 

FROM SALES_HISTORY_HEADER SHH,ADDRESS ADR 

INNER JOIN ADR ON 
SHH.CUST_NO = ADR.CUST_NO 


GROUP BY SHH.CUST_NO 
HAVING Max(SHH.INVOICE_DATE) < '20100728' 
+1

「我的內部連接不工作」不是一個完整的描述,還有什麼dbms? –

回答

3

您在混合加入樣式。如果您打算使用顯式連接(並且您應該),那麼您可以在JOIN上指定第二個表,而不是在FROM子句中列出所有表。

SELECT SHH.CUST_NO,ADR.EMAIL 
    FROM SALES_HISTORY_HEADER SHH 
     INNER JOIN ADDRESS ADR 
      ON SHH.CUST_NO = ADR.CUST_NO 
    GROUP BY SHH.CUST_NO, ADR.EMAIL 
    HAVING Max(SHH.INVOICE_DATE) < '20100728' 
+0

嗨,喬,感謝您的幫助,但我得到一個錯誤,指出「列無效:必須按列:EMAIL在選擇列表中」 – seb

+0

@seb然後您需要添加ADR.EMAIL到您的GROUP BY語句 – Taryn

+0

@seb :在「GROUP BY」子句中增加了「ADR.EMAIL」。 –