mysql选择某些信息和计数

时间:2013-07-29 17:09:01

标签: mysql

这是我的数据库结构

id, user_id, veh_id, amount
1, 2, 3, 123
2, 2, 4, 125
3, 1, 3, 122
4, 1, 4, 126

我正在尝试让SELECT为每个user_id计算它作为每个veh_id的数量的时间。如果用户在veh_id上没有金额,我想为此显示0。

我正在考虑使用SUM(IF()),但我不知道如何通过user_id将它们放在一个漂亮的表中。

这是我到目前为止所拥有的

SELECT user_id, SUM(IF(user_id !=0, 1, 0)) AS COUNT
FROM TABLE 
GROUP BY user_id

我是在正确的轨道上得到我想要的东西

这是我修改过的问题,其结果与我想要的相近:

我是否可以计算用户是veh_id上出价最高者的时间 因此,如果用户对30辆汽车进行投标,我可以看到他是12次出价最高的人

1 个答案:

答案 0 :(得分:0)

为了获得count = 0的情况,您需要有一个可以与此表相关的车辆表。如果没有这个,你就没有明确的方法去理解可能的车辆是什么。我还假设您有一个用户表,如果没有这个,您不知道完整的Universe用户。您需要加入所有这三个表来获得答案。

对于这个例子,我假设表名是users,users_vehicles,vehicles

SELECT u.user_id, v.vehicle_id, COUNT(uv.id)
FROM users AS u
LEFT JOIN users_vehicles AS uv
   ON u.user_id = uv.user_id
RIGHT JOIN vehicles AS v
   ON uv.veh_id = v.veh_id
GROUP BY u.user_id, v.vehicle_id

请注意,LEFT JOINusers之间的users_vehicles将包含所有user_id值,即使user_id中不存在users_vehicles 。同样,RIGHT JOINusers_vehicles之间的vehicles将包含所有veh_id值,即使user_vehicles中没有这些值也是如此。