既存のDBをベースにrailsでアプリを作っている初心者です。
RailsなのでActiveRecord+MYSQLなのですが、その前にSQLでどのように表現するかがわかっておりません。
ほしい結果
あるイベントの座席状況として、座席のseatテーブルをベースに、予約のついている座席にだけevent_id, order_idが入るようにしたい。
seat_id | place_id | seat_name | event_id | order_id |
---|---|---|---|---|
1 | 1 | 1-1-1 | 1 | 1 |
2 | 1 | 1-1-2 | ||
3 | 1 | 1-1-3 | 1 | 2 |
4 | 1 | 1-1-4 | 1 | 2 |
5 | 1 | 1-1-5 |
試したこと
SQL
1SELECT seat.*, reservation.* 2FROM seat 3LEFT OUTER JOIN reservation 4ON seat.id = reservation.seat_id 5WHERE reservation.event_id = 1 6OR seat.place_id = 1
上ですが、実際の環境の100万件ほどの予約テーブルと100万件の座席テーブルでは1時間待っても結果が出ませんでした。OR文を削除すると、即座に結果は出力されました。ですが、それですと、空き席の情報が取得できません。
予約のついた席、通常の席、それぞれ出力して、JS内で配列として結合したほうがよいのか、など3日間ほどずっと悩んでいます・・・
何卒、よろしくお願いいたします。
既存の3テーブル
event table
id | event_name | place_id |
---|---|---|
1 | エービーシー | 1 |
2 | あいうえイベント | 2 |
seat table
※複数のイベントに利用される、ある会場(place)の予約のない素の座席
id | place_id | seat_name |
---|---|---|
1 | 1 | 1-1-1 |
2 | 1 | 1-1-2 |
3 | 1 | 1-1-3 |
4 | 1 | 1-1-4 |
5 | 1 | 1-1-5 |
6 | 2 | 1-1-1 |
7 | 2 | 1-1-2 |
reservation table
event_id | seat_id | order_id |
---|---|---|
1 | 1 | 1 |
1 | 3 | 2 |
1 | 4 | 2 |
回答2件
あなたの回答
tips
プレビュー