2009-01-23 59 views
0

基本上我有一個MySQL查詢類似以下內容:MySQL的連接查詢幫助

mysql_query("SELECT n.title, v.value FROM posts n INNER JOIN votes v ON n.id = v.id"); 

,我需要做的是抓住從職位表中的標題和投票表中的當前票值。

目前,投票不存儲到投票表中,除非投票發生。因此,所有0票的帖子都不在投票表中。

這會導致錯誤,它試圖獲取標題和投票值,其中post id =投票值id。如果在投票表中沒有任何記錄,那麼值應該返回爲NULL或0,但目前整個查詢返回爲空,所以我甚至不能返回標題。

我該如何解決這一切在一個查詢?我不想不得不使用多個查詢... 謝謝:)

回答

4

使用左連接,而不是內部

內部聯接需要從表上的加入雙方匹配的行。

左連接(或左外連接使用其全名)選擇左表中的所有行,然後匹配右行,如果右表中沒有匹配的行,則返回空值,就像你在問。

(也有右外連接,但同樣的效果可通過在ON子句中圍繞改變條件來實現)如正

+0

顯示是我知道多少!非常感謝! – 2009-01-23 00:04:56

0
SELECT n.title, v.value FROM posts n LEFT JOIN votes v ON n.id = v.id 
-2

SELECT n.title,v.value FROM帖子,票as v WHERE n.id = v.id

試試看。

+0

這就是我之前的工作,因此默認情況下,MySQL必須使用LEFT JOIN。直到現在,當我重寫這個查詢時,我決定使用INNER JOIN,它把所有東西搞砸了。謝謝:) – 2009-01-23 00:07:47