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 であるとします。月曜日に利用可能なすべての PUBLIC バスを、そのバスで行われた予約の総数を含む新しい行で表示したいと考えています。

例えば

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 に答える