2013-03-29 50 views
0

我在mySQL中找到一個解決方案時遇到了一些問題,我有兩個表,其中有一個我有我的圖像,另一個我有我的投票和我綁定在一起的image_id使用此行:按票數排序DESC但未投票不顯示

$sql = "SELECT `image` FROM `sh_images`, `sh_votes` WHERE 
`sh_images`.`id`=`sh_votes`.`image_id` ORDER BY `vote` DESC"; 

一切正常,只是還未被評爲圖像不顯示的罰款。那麼你有解決方案嗎?

+0

@Strawberry,你的回滾沒有意義。代碼應該在代碼塊中,而不是blockquotes,並且[「Thanks in advantage」](http://meta.stackoverflow.com/questions/288160/no-thanks-damn-it),以及不正確的英語,應該被刪除。 – gunr2171

+0

@ gunr2171這是我反對你的考古本能的方式 - 但繼續下去。 – Strawberry

回答

2

您應該對此使用LEFT JOIN

LEFT JOIN不同於INNER JOIN這就是你現在正在做的)。 LEFT JOIN顯示在LeftHand端定義的所有記錄是否在RightHand端表上有匹配記錄或沒有結果。

SELECT image, vote 
FROM sh_images 
     LEFT JOIN sh_votes 
      ON sh_images.id = sh_votes.image_id 
ORDER BY vote DESC 

爲了進一步獲得更多的知識有關加入,請訪問以下鏈接:

+0

非常感謝它:) – user2223874

+0

請選擇正確的答案。 – koriander

+0

不客氣:) –

1

當然,只要使用LEFT JOIN :

SELECT image 
FROM sh_images 
LEFT JOIN sh_votes ON sh_images.id=sh_votes.image_id 
ORDER BY vote DESC; 

順便說一下,考慮對你的直接連接使用INNER JOIN語法,這樣更容易防止缺少連接條件。