2011-04-30 93 views
0

我有兩個表,「消息」和「喜歡」在「測試」數據庫。 「喜歡」表只包含兩個外鍵,一個指向第三個表的「用戶名」和一個將其鏈接到「消息」的「message_id」。SQL查詢問題

我想查找所有具有network_id屬性的特定值的消息,並且還返回這些消息中有多少個「喜歡」消息。我試圖做下面的查詢:

SELECT 
`Messages`.`message_id` AS id, 
`Messages`.`latitude` AS lat, 
`Messages`.`longitude` AS lon, 
`Messages`.`text` AS message, 
`Messages`.`network_id` AS network, 
`Messages`.`poster_name` AS user, 
COUNT(*) AS numLikes 
FROM `test`.`Messages` LEFT JOIN `test`.`Likes` on `Messages`.message_id = `Likes`.message_id 
WHERE `Messages`.network_id = 2 
GROUP BY 
`Messages`.`message_id`, 
`Messages`.`latitude`, 
`Messages`.`longitude`, 
`Messages`.`text`, 
`Messages`.`network_id`, 
`Messages`.`poster_name` 
LIMIT 50; 

,但這樣做的問題是,如果一個消息具有零喜歡上它,在該消息numLikes仍然有值「1」。如果消息沒有「喜歡」,消息行仍應返回,但numLikes的值爲0.任何人都可以指向正確的方向嗎?

回答

4

變化

count(*) as numLikes 

COUNT(likes.message_id) AS numLikes 
0

用count字段的名稱替換*。