2011-01-24 22 views
0

我是SQL新手,試圖爲6個表一起構建一個連接。這裏是我的示例代碼:MySQL中用於構建倍數的正確語法JOIN

SELECT cr.COMMUNICATIONS_ID, cr.CONSUMER_ID, cr.ACTION_LOG_ID, nc.CONSUMER_ID, cal.CONSUMER_ID, cal.TIPS_AMOUNT, cal.LAST_MOD_TIME, cirm.CONSUMER_RATING, ces.EXPERT_SCORE, cim.CONSUMER_INTEREST_EXPERT_ID, scs.SIMILARITY 
FROM COMMUNICATION_RELVANCE AS cr 
JOIN network_communications AS nc 
ON cr.COMMUNICATIONS_ID=nc.COMMUNICATIONS_ID 
JOIN consumer_action_log AS cal 
ON cr.ACTION_LOG_ID=cal.ACTION_LOG_ID 
JOIN communication_interest_mapping AS cim 
ON cr.COMMUNICATIONS_ID=cim.COMMUNICATIONS_ID 
JOIN consumer_interest_rating_mapping AS cirm 
ON cr.CONSUMER_ID=cirm.CONSUMER_ID 
    AND cim.CONSUMER_INTEREST_EXPERT_ID=cirm.CONSUMER_INTEREST_ID 
JOIN consumer_expert_score AS ces 
ON nc.CONSUMER_ID=ces.CONSUMER_ID 
    AND cim.CONSUMER_INTEREST_EXPERT_ID=CONSUMER_EXPERT_ID 
JOIN survey_customer_similarity AS scs 
ON nc.CONSUMER_ID=scs.CONSUMER_ID 
    AND cal.CONSUMER_ID=scs.CONSUMER_ID; 

在我開始調試之前,我想確保在我的代碼中沒有任何批發問題,我的語法。

+3

執行查詢。然後你會看到是否有任何語法錯誤。如果我想檢查查詢語法錯誤,那我就會這麼做。 – Oswald 2011-01-24 21:06:01

回答

5

這對我來說很好。嘗試運行它以查看是否有任何錯誤。

幾個要點:

  • 您沒有一個WHERE子句,所以它會返回所有行。那是故意的嗎?
  • 您拼錯了表格的名稱:COMMUNICATION_RELVANCE。在編寫更多代碼之前,你可能應該修復這個問題。我知道這聽起來很迂腐,但這是因爲在最初的開發階段修復它可能很容易。如果太長時間,人們會編寫依賴於拼寫錯誤的代碼,並且最終可能會因更改名稱和更新所有現有代碼而變得非常困難/昂貴。那麼你會被困住它,它會惹惱所有需要維護你的代碼的人。
+0

+1:很好的建議,關於儘早解決拼寫錯誤。我必須在一個存儲過程中拼寫錯誤的項目中處理它,但我無法更改它o_O – VoodooChild 2011-01-24 22:06:01

0

所有線條看起來很好,但你可能要添加別名此行對CONSUMER_EXPERT_ID是「正確的」

AND cim.CONSUMER_INTEREST_EXPERT_ID=CONSUMER_EXPERT_ID