クエリの書き方
Oracle11gを使用しています。以下のような3つのテーブルがあります。
(1)駅マスタテーブル
create table tbl_station (
ID NUMBER PRIMARY KEY,
Name varchar2(32),
);
(2)レストランマスタテーブル
create table tbl_restaurant (
ID NUMBER PRIMARY KEY,
Name varchar2(32),
ZipCode varchar2(8),
Prefecture varchar2(32),
City varchar2(32),
StreetAddress varchar2(64),
PhoneNumber varchar2(20),
NearestStation NUMBER,
constraint fk1_tbl_restaurant foreign key (NearestStation) references tbl_station(ID)
);
(3)評価トランザクションテーブル
create table tbl_gradings (
RestaurantID NUMBER,
UserID varchar2(255),
Gradings NUMBER,
Primary Key (RestaurantID, UserID),
constraint fk1_tbl_gradings foreign key (RestaurantID) references tbl_restaurant(ID),
constraint fk2_tbl_gradings foreign key (UserID) references EXTERNALUSERTBL(EXTERNALTBLUSERID)
);
以下のようにデータを入力してみました。
(1)駅マスタテーブル
ID, Name
1, 新宿
2, 渋谷
3, 銀座
(2)レストランマスタテーブル
ID, Name, ZipCode, Prefecture, City, StreetAddress, PhoneNumber, NearestStation
1, レストラン1, 100-1000, 東京都, 新宿区, 西新宿1-1-1, 03-1111-1111, 1
2, レストラン2, 300-3000, 東京都, 中央区, 銀座1-1-1, 03-3333-3333, 3
3, レストラン3, 100-1001, 東京都, 新宿区, 東新宿1-1-1, 03-1111-2222, 1
4, レストラン4, 200-2000, 東京都, 渋谷区, 渋谷1-1-1, 03-2222-2222, 2
(3)評価トランザクションテーブル
RestaurantID, UserID, Gradings
1, User1, 5
1, User2, 3
2, User1, 5
このような場合に、以下のようなデータを出力するクエリを書きたいのですが、書き方がわかりません。
内容:全てのレストラン情報を評価の平均値とともに重複なく表示。
出力イメージは以下のようなものです。
ID, レストラン名, 郵便番号, 都道府県, 市区町村, 町名番地, 電話番号, 最寄駅, 平均評価
1, レストラン1, 100-1000, 東京都, 新宿区, 西新宿1-1-1, 03-1111-1111, 新宿, 4
2, レストラン2, 300-3000, 東京都, 中央区, 銀座1-1-1, 03-3333-3333, 銀座, 5
3, レストラン3, 100-1001, 東京都, 新宿区, 東新宿1-1-1, 03-1111-2222, 新宿
4, レストラン4, 200-2000, 東京都, 渋谷区, 渋谷1-1-1, 03-2222-2222, 渋谷
最寄駅名、評価を出力することから3テーブル全てを結合し、さらにAVG関数を使って平均の評価値をレストラン毎に計算する必要があり、僕には難しいです。。おわかりの方、宜しくお願いします。
お礼
ご回答ありがとうございます。 なるほど、そのやり方でできました。 ありがとうございます。