2017-04-17 28 views
0

我想創建兩塊鏈接表。我的問題是將這項設計工作,並會加入我的工作發言。鏈接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..*關係,但您的查詢是有點本末倒置。它應該看起來像

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

當連接兩個表時,請記住,一個是正常的(一個與主鍵要鏈接),另一個是孩子(一個與國外鍵)。

JOIN子句的SQL語句採用以下模式:

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

其中fk是外鍵和pk是主鍵。

由於兩個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真的banquethall:否則你就需要仔細報價名稱:"banquet hall")。

A WHERE子句總是遵循表格表達式。你的情況:

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

既然你加入其中有重複列名(id)表,必須限定不明確的列名。

+0

我實際上想要做的是選擇所有使用預訂ID – okaSKR

+0

@okaSKR它應該工作,如果你改變上面的最後一行。 – Manngo