2009-08-14 47 views
0

你怎麼能有IN條款ON - 條款LEFT JOIN要找到一個解決方案的問題與左加入的輸入在SQL中

我想從我的database問題中選擇問題的標題,問題的標籤和question_id,使question_id爲14。我希望這個問題與question_id 14

標籤和標題輸出看起來應該像

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

這個問題實際上是略高於最初更具挑戰性。

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; 

感謝Joe和徹米在解決第一個問題!

+3

我不完全確定你現在要做什麼?擁有該IN條款不應該是必要的。你期望什麼產出,你會得到什麼? – Tchami 2009-08-15 00:17:21

+0

這個問題http://stackoverflow.com/questions/1280888/to-get-many-tags-for-a-question-effectively-from-postgres-by-php是基於這裏的問題。 – 2009-08-15 01:10:25

回答

2

您還沒有指定第二個表格的連接條件,因此您要爲每個標題選擇每個標籤。

使用WHERE作爲行條件

這兩張表是如何關聯的?將該條件添加到聯接。例如

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

謝謝你解決第一個問題! - 我更新了我的問題以顯示實際問題。 – 2009-08-15 00:14:16

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

你錯過了在這兩個表應該如何加入的信息,即:

ON questions.question_id = tags.question_id 

之後,你指定question_id你想要的:

WHERE questions.question_id = 14 
+0

感謝您解決第一個問題! - 我更新了我的問題以顯示實際問題。 – 2009-08-15 00:14:46

相關問題