2013-02-26 18 views
0

我有兩個表:職位,post_image加盟條件在mysql中需要忽略空場

目前我想加入他們的行列,像這樣:

$sql = 'SELECT post.*, post_image.name AS img FROM post, post_image 
WHERE post_image.postId=post.id LIMIT 10'; 

這裏是我的問題。有些帖子在post_image中沒有任何條目,但我仍然需要它們返回。我知道mysql可以檢查null,但我不確定它會在我的聲明中的位置,如果這是解決方案。我也不完全確定我可以使用我正在使用的簡寫連接來完成此操作。

請幫助:)

編輯:

這是工作作爲目前預計,但我也需要確保它只能與場序= 0拉post_image因爲可以有多個post_image項。我嘗試添加一個WHERE子句,它似乎只與拉images.Here帖子我有:

SELECT post.*, post_image.name AS img FROM post LEFT JOIN post_image ON post_image.postId=post.id WHERE post_image.ordinal=0 LIMIT 10 
+0

很抱歉的編輯,我解決了部分通過添加並向JOIN而不是WHERE – Helto 2013-02-27 02:42:47

回答

5

使用LEFT JOIN這樣的:

SELECT 
    post.*, 
    post_image.name AS img 
FROM post 
LEFT JOIN post_image ON post_image.postId = post.id 
LIMIT 10; 

您所查詢的是INNER JOIN使用舊兩個表加入使用WHERE子句來指定連接條件的語法。最好使用明確的JOIN語法,而不是在將來的查詢中使用INNER JOIN條件。

欲瞭解更多信息:

+0

我有一些習慣打破了,謝謝你 – Helto 2013-02-26 06:33:12

+0

@Helto - 歡迎你任何時候:) – 2013-02-26 06:34:50

+0

任何機會你可以幫助我添加這個編輯嗎? – Helto 2013-02-27 00:28:38

1

如何使用LEFT JOIN?我認爲它會顯示帖子,雖然它沒有圖像。

SELECT * FROM post p LEFT JOIN post_image pi ON p.id = pi.postId