1

私は4つのテーブルを持っています

  1. ( car_ registration_no, class, type_code)
  2. レンタル履歴( rent_date, car_registration_no, rent_location_code, return_location_code)
  3. タイプ( type_code, make, model)
  4. 場所( location_code, branch_name)

場所別に最も人気のあるレンタカーを表示するクエリが必要です。前月の各場所での合計レンタルを表示するクエリが必要ですか?

これまでのコードは次のとおりですが、完成できませんでした。

SELECT car.class, car.type_code , type.make, type.model 
  FROM car , type, rental_history 
 where rental_history.car_registration_no = car.car_registration_no 
   and car.type_code = type.type_code
4

2 に答える 2

4

テーブルを結合して数値を計算する必要があります。正しい方向に導くために、より簡単なクエリから始めましょう。

これは、場所ごとに「type_code」の車が何回レンタルされたかを示します (テストされていないため、エラーが含まれている可能性があります)。

SELECT
    count(car.car_registration_no) as rental_num,
    car.type_code,
    rental_history.rent_location_code
FROM car
LEFT JOIN rental_history ON (rental_history.car_registration_no = car.car_registration_no)
GROUP BY car.type_code, rental_history.rent_location_code;

ここで左結合を使用しているのは、レンタルされておらず履歴がない車がある可能性があるためです。表示されない代わりに、レンタル数が「0」になります。

編集:

2 番目のクエリについては、実際には非常に簡単です。場所でグループ化し、日付でフィルタリングし、COUNT を使用する必要があります (これも未テストです)。

SELECT
    count(rental_history.car_registration_no) as rental_num,
    rental_history.rent_location_code
FROM rental_history
WHERE rent_date >= '2012-03-01' AND rent_date < '2012-04-01'
GROUP BY rental_history.rent_location_code;
于 2012-04-21T11:21:27.243 に答える
0

すべてのテーブルに参加し、count を使用します..!

于 2012-04-21T10:43:03.250 に答える