0

在我的数据库中获得我想要的结果时遇到问题。我想从其他表中提取总行数,其中它的条件将属于另一个表。为了清楚起见,这里是示例插图。

>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.. 我想显示星期一可用的所有公共巴士,并在新行中显示该巴士上的预订总数。

例如

GeneratedTable (WHERE Date ='2013/3/4', Type='Public', Day='Monday')

>Bus ID | Day | Type | TotalNumberReservation

>1000   |Monday | Public | 1

>4000   |Monday | Public | 1
4

2 回答 2

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

请参阅带有演示的 SQL Fiddle

如果您想返回与正确日期匹配的所有行,即使没有预订,那么您将需要使用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

请参阅带有演示的 SQL Fiddle

于 2013-03-05T19:22:30.273 回答
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
于 2013-03-05T19:24:40.127 回答