2017-04-17 29 views
0

リンクされている2つのテーブルを作成したいとします。私の質問はこのデザインが動作し、私のjoinステートメントが動作するかどうかです。2つのテーブルを結合してステートメントを結合する

表#1宴会場など ID(PK)、 名、 場所、

表#2予約 ID(PK)、 Banquet_hall_id(FK)、予約 日、 など

予約値とホテルの値を一緒に取得したい場合、次のSQLは機能しますか?私は何を期待していますが、これは(などの名前、場所、)宴会場から値を選択しても、予約日などの予約から値を選択することになるで

select from reservation where id = 1 inner join on banquet_hall_id = banquenthall.id 

など

答えて

0

ありますので、はいデザインが正しく見えますホールと予約の関係は1..*ですが、あなたの質問は逆さまです。これは、2つのテーブルを結合すると、

select r.*, h.name, h.location 
from reservation r 
join hall h 
on r.banquet_hall_id = h.id 
where h.id = 1; 
+0

私がしたかったのは、実際には予約IDを使ってすべてを選択したことでした。 – okaSKR

0

ように見える1が正常に(あなたがリンクされている主キーと1)であり、他は(外国を有するものであることを覚えておいてくださいキー)。 fkは、外部キーとpkが主キーである

select * 
from child inner join parent on child.fk = parent.pk 

JOIN句を指定したSQL文は以下のパターンを取ります。

JOINとの両方が対称的なので、いずれの方法でも書き込むことができます。例えば:あなたのケースでは

select * 
from parent inner join child on child.fk = parent.pk 

、これは、その結果:

select * 
from reservation inner join banquethall on banquet_hall_id = banquenthall.id 

"banquet hall":そうでなければ、名前を二重引用符に必要があるだろう、私はあなたのテーブルbanquet hallが本当にbanquethallであると仮定します)。

WHERE常にが表の式に続きます。あなたのケースでは:

select * 
from reservation inner join banquethall on banquet_hall_id = banquenthall.id 
where reservation.id=1; 
-- where banquethall.id=1; 

あなたは(id)のカラム名を重複しているテーブルに参加しているので、あなたはあいまいな列名を修飾する必要があります。

+0

予約アイデア – okaSKR

+0

@okSKRを使用してすべてを選択しました。 – Manngo

関連する問題