计算两个表格

时间:2011-10-24 14:34:18

标签: mysql sql

我有一个包含两个表,预订和用户的mysql数据库。 它们通过预订表中的外键user_id链接。

我如何显示每位用户的预订数量。

我一直在尝试对此查询进行修改:

select first_name, last_name, count(*) 
from bookings 
left join users on bookings.user_id 
group by user_id 
order by count(*);

但是它将数据库锁定了相当长的时间。

2 个答案:

答案 0 :(得分:1)

在书中选择分组:

select user_id, count(1) from bookings group by user_id;

然后,如果您需要名称等,请使用users表

加入此子选择

答案 1 :(得分:1)

首先,您的ON子句不完整。通常它是ON X=Y,你有ON X。这很重要,因为您告诉数据库如何链接您的两个表。我猜这是失去最多时间的地方。

其次,这里使用的LEFT JOIN是没用的(除非你想要没有用户的预订。)尝试INNER JOIN。

第三,作为一般规则,最好做SmallTable INNER JOIN BigTable(并非总是如此,您的里程可能会有所不同。)

第四,如上所述,使用ORDER BY子句的别名。

尝试:

select first_name, last_name, count(*) as cnt
from users
inner join bookings on bookings.user_id = user.id
group by user_id
order by cnt;