2011-04-30 96 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字段的名称替换*。