将2个表链接在一起并加入语句

时间:2017-04-17 21:48:46

标签: sql sql-server

我想创建两个链接的表。我的问题是这个设计是否有效,我的加入声明是否有效。

表#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

我希望这会从宴会厅(名称,地点等)中选择价值,并从预订中选择价值,例如预订天数等。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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")。

WHERE子句始终跟在表格表达式之后。在你的情况下:

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

由于您正在连接具有重复列名称(id)的表,因此您必须限定不明确的列名。