gpt4 book ai didi

通过连接SQL更新表?

转载 作者:行者123 更新时间:2023-12-04 22:13:58 24 4
gpt4 key购买 nike

我有以下数据库并希望更新 room 表。 room 表列出了单人房、双人房或大床房,价格是每间房每晚的价格,酒店中的名称是酒店名称。

我需要做的是将所有双人间改成 Scotty Hotel 的特大床间,并将其价格提高 10%。

我知道如何在单个表中更新价格和类型,但似乎在这里我需要加入 HNO 上的酒店和房间,从而进行更新。嵌套查询可能吗?

create table Hotel  (
HNo char(4),
Name varchar(20) not null,
Address varchar(50),
Constraint PK_Hotel Primary Key (HNo)
);

create table Room (
RNo char(4),
HNo char(4),
Type char(6) not null,
Price decimal (7,2),
Constraint PK_Room Primary Key (HNo, RNo),
Constraint FK_Room Foreign Key (HNo)
references Hotel (HNo)
);


create table Guest (
GNo char(4),
Name varchar(20) not null,
Address varchar(50),
Constraint PK_Guest Primary Key (GNo)

);

create table Booking (
HNo char(4),
GNo char(4),
DateFrom date,
DateTo date,
RNo char(4),
Constraint PK_Booking Primary Key (HNo, GNo, DateFrom),
Constraint FK_Booking Foreign Key (GNo)
references Guest (GNo),
Constraint FK_Booking_room Foreign Key (HNo, RNo)
references Room (HNo, RNo),
Constraint FK_Booking_hotel Foreign Key (HNo)
references Hotel (HNo)
);

我有两个主要问题:
  • 是否可以更新需要连接的表?
  • 我想通过 View 列出客人。我可以创建一个包含酒店名称和曾经入住过该酒店的不同客人数量的 View 吗?
  • 最佳答案

    首先,最好进行选择以确保您的搜索/过滤条件正确:

    SELECT
    h.Name,
    r.RNo,
    r.Type,
    r.Price

    FROM
    room r

    INNER JOIN hotel h
    on h.hno = r.hno

    WHERE
    h.name = 'Scotty Hotel'
    and
    r.type = 'Double' ;

    如果这针对正确的行,则使用相同的过滤条件进行更新查询,如下所示。

    提示,复制整个 SELECT 查询然后编辑它以形成新的 UPDATE 查询是值得的。例如,对于 mySql,将 FROM 替换为 UPDATE(并保留原始 FROM 子句的内容以形成新的 UPDATE 子句),将 WHERE 保留在原位,并使用原始查询中的 SELECT 列表的内容作为基础形成新的 SET 子句(紧接在 WHERE 子句之前)。

    此代码用于 mySql :
    UPDATE room r 

    INNER JOIN hotel h
    on h.hno = r.hno

    SET
    r.type = 'King',
    r.price = r.price * 1.1

    WHERE
    h.name = 'Scotty Hotel'
    and
    r.type = 'Double' ;

    此代码用于 MS SQL Server :
    UPDATE r

    SET
    r.type = 'King',
    r.price = r.price * 1.1

    FROM
    room r

    INNER JOIN hotel h
    on h.hno = r.hno

    WHERE
    h.name = 'Scotty Hotel'
    and
    r.type = 'Double' ;

    关于通过连接SQL更新表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15743236/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com