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

使用しているデータベースパッケージはどれですか? –

+0

Toad、DBVisualizer、PHPMyAdmin – Spencer

+0

EXPLAINまたはToadを使用してみましたか? – Spechal

答えて

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 
+0

それはありました!どうもありがとうございます! – Spencer

2

明らかな(構文)エラーはありません。ジョインで論理エラーが発生した可能性があります。デバッグするには、結果が返るまで結合を削除します。その後、ジョインを追加し始めます。これは、あなたが間違っていた場所を表示するはずです。

+0

私は実際にこれをすでに行っています(これは大きな結合の一部です)。孤立している最初の2つの結合は、私に問題を与えません。3回目の結合と対になるときだけです。 – Spencer

+0

LIMIT句を追加して、結果が返されるかどうかを調べることができます。 – Gerrat

関連する問題