2011-01-26 70 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

我没有看到任何明显的(语法)错误。您可能在您的连接中发生逻辑错误。要调试,请取消连接,直到找回结果。然后开始添加连接。这应该会告诉你哪里出错了。