2009-08-14 20 views
0

IN -clauseをLEFT JOINとすると、どのようにしてONの節に入りますか?LEFT JOINのSQLでの問題の解決策を見つけるには

question_idが14であるように質問のタグ、質問のタグ、質問のquestion_idをdatabaseから選択しようとしています。私はこの問題は少し、実際に当初よりも困難である出力は

title  |   question_id  |  tag 
------------|----------------------------|----------------- 
A   |   14     |  php  
A   |   14     |  perl 
A   |   14     |  sql 
A   |   14     |  databases 

のようになりますquestion_id 14

との質問のタグやタイトルに期待しています。最初の問題を解決するのにジョーとチャーミーへ

SQL command

SELECT questions.title, questions.question_id, tags.tag 
    FROM questions 
    LEFT JOIN tags 
    ON questions.question_id = tags.question_id IN ( // Problem here! 
      SELECT question_id 
      FROM questions 
      DESC LIMIT 50) 
    WHERE questions.question_id = 14 
    ORDER BY was_sent_at_time 
    DESC LIMIT 50; 

ありがとう!

+3

私はあなたが今達成しようとしていることを正確にはわかりません。そのIN節を持つ必要はありません。あなたはどんなアウトプットを期待していますか? – Tchami

+0

この質問は、ここの問題に基づいています:http://stackoverflow.com/questions/1280888/to-get-many-tags-for-a-question-effectively-from-postgres-by-php –

答えて

2

あなたが指定していません2番目のテーブルの結合条件。すべてのタイトルのすべてのタグを選択します。

行条件にWHEREを使用

どのように2つのテーブルが関連していますか?その条件を結合に追加します。たとえば、

SELECT questions.title, questions.question_id, tags.tag 
FROM questions 
LEFT JOIN tags 
ON questions.question_id = tags.question_id 
WHERE questions.question_id = 14 
ORDER BY was_sent_at_time 
DESC LIMIT 50; 
+0

最初の問題を解決していただきありがとうございます! - 私は実際の問題を示すために私の質問を更新しました。 –

1

あなたのクエリは次のようになります。

SELECT questions.title, questions.question_id, tags.tag 
    FROM questions 
    LEFT JOIN tags 
    ON questions.question_id = tags.question_id 
    WHERE questions.question_id = 14 
    ORDER BY was_sent_at_time 
    DESC LIMIT 50; 

はここで作品に参加するか、左のarticleです。

次の2つのテーブルは、すなわちに入社する方法についての情報が欠落している:

ON questions.question_id = tags.question_id 

その後、あなたはあなたが欲しいquestion_idを指定:

WHERE questions.question_id = 14 
+0

最初の問題を解決していただきありがとうございます! - 私は実際の問題を示すために私の質問を更新しました。 –

関連する問題