我遇到了在数据库中获得所需结果的问题。我想从其他表中提取总行计数,其中的条件将属于另一个表。为了说清楚,以下是示例说明。
>tblBus
>
>Bus ID ~ Day~ Type
>
>1000 | Monday | Public
>2000|Monday | Private
>3000|Tuesday| Public
>4000|Monday | Public
>tblReservation
>
>Bus ID | Date
>1000 | 2013/3/4
>2000 | 2013/3/4
>3000 | 2013/3/6
假设预订日是星期一,即2013/3/4 ..我想显示星期一可用的所有PUBLIC巴士,新行有该巴士预订总数
e.g。
GeneratedTable(WHERE Date ='2013/3 / 4',Type ='Public',Day ='Monday')
>Bus ID | Day | Type | TotalNumberReservation
>1000 |Monday | Public | 1
>4000 |Monday | Public | 1
答案 0 :(得分:1)
您可以使用以下内容加入bus id
上的表格,然后计算预订次数:
select b.`bus id`,
b.day,
b.type,
count(r.date) TotalNumberReservation
from tblBus b
inner join tblReservation r
on b.`bus id` = r.`bus id`
where r.date = '2013-03-04'
and b.day = 'Monday'
group by b.`bus id`, b.day, b.type
如果您想要返回与正确日期相匹配的所有行,即使没有预订,那么您还需要使用LEFT JOIN
:
select b.`bus id`,
b.day,
b.type,
count(r.date) TotalNumberReservation
from tblBus b
left join tblReservation r
on b.`bus id` = r.`bus id`
AND r.date = '2013-03-04'
where b.day = 'Monday'
group by b.`bus id`, b.day, b.type
答案 1 :(得分:0)
以下是生成所有公交车,日期和日期的计数的基本查询,然后您可以根据需要进行过滤:
Select a.bus_id, day, type, count(*) as TotalNumberReservation
from tblBus a
join tblReservation b
on a.busId=b.busId
group by a.bus_id,day,type