2011-01-26 67 views
0

我是SQL新手,爲什麼這段代碼無法執行而不知所措。我知道錯誤,但沒有得到任何結果。無論等待多久,代碼都會繼續處理。我知道這個問題可能與我的特定數據庫有關,但我想知道是否有任何明顯的錯誤。將不會執行的SQL查詢

此外,如果它與我在我的數據庫中進行的調用有關,那麼我將如何去調試它,因爲我沒有正式的錯誤?

SELECT cr.COMMUNICATIONS_ID AS ANSWER_ID, cr.CONSUMER_ID as VIEWER_ID, 
     cr.ACTION_LOG_ID, nc.PARENT_COMMUNICATIONS_ID AS QUESTION_ID, 
     cirm.CONSUMER_RATING AS VIEWER_INTEREST, 
     cim.CONSUMER_INTEREST_EXPERT_ID AS DOMAIN 
FROM (
     SELECT 234 AS CONSUMER_ID, ACTION_LOG_ID, COMMUNICATIONS_ID 
     FROM consumer_action_log 
     WHERE COMM_TYPE_ID=4 
    ) AS cr 
    JOIN network_communications AS nc ON 
     cr.COMMUNICATIONS_ID=nc.COMMUNICATIONS_ID 
    JOIN communication_interest_mapping AS cim ON 
     nc.PARENT_COMMUNICATIONS_ID=cim.COMMUNICATION_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; 
+0

你正在使用哪個數據庫包? – 2011-01-26 01:41:52

+0

Toad,DBVisualizer和PHPMyAdmin – Spencer 2011-01-26 01:43:45

+0

您是否嘗試過使用EXPLAIN或Toad等價物? – Spechal 2011-01-26 01:48:50

回答

2

子查詢中的派生列可能會拋出MySQL。試試這個查詢來代替同樣的結果

SELECT cr.COMMUNICATIONS_ID AS ANSWER_ID, cirm.CONSUMER_ID as VIEWER_ID, 
     cr.ACTION_LOG_ID, nc.PARENT_COMMUNICATIONS_ID AS QUESTION_ID, 
     cirm.CONSUMER_RATING AS VIEWER_INTEREST, 
     cim.CONSUMER_INTEREST_EXPERT_ID AS DOMAIN 
FROM (
     SELECT ACTION_LOG_ID, COMMUNICATIONS_ID 
     FROM consumer_action_log 
     WHERE COMM_TYPE_ID=4 
    ) AS cr 
    JOIN network_communications AS nc ON 
     cr.COMMUNICATIONS_ID=nc.COMMUNICATIONS_ID 
    JOIN communication_interest_mapping AS cim ON 
     nc.PARENT_COMMUNICATIONS_ID=cim.COMMUNICATION_ID 
    JOIN consumer_interest_rating_mapping AS cirm ON 
     cim.CONSUMER_INTEREST_EXPERT_ID=cirm.CONSUMER_INTEREST_ID 
WHERE cirm.CONSUMER_ID = 234 
2

我沒有看到任何明顯的(語法)錯誤。您可能在您的連接中發生邏輯錯誤。要調試,請取消連接,直到找回結果。然後開始添加連接。這應該會告訴你哪裏出錯了。