SQL查询帮助
我想创建一个查询,在给定包ID的情况下,查询到西班牙度假的最便宜包。在执行查询时,我只想知道如何进行查询。我需要关于“package”表的值中包含哪些内容的帮助,以及关于如何显示查询的帮助 这是表格:SQL查询帮助,sql,sql-server,insert,Sql,Sql Server,Insert,我想创建一个查询,在给定包ID的情况下,查询到西班牙度假的最便宜包。在执行查询时,我只想知道如何进行查询。我需要关于“package”表的值中包含哪些内容的帮助,以及关于如何显示查询的帮助 这是表格: USE [zachtravelagency] CREATE TABLE package ( [packageID] INTEGER NOT NULL IDENTITY (1,1) PRIMARY KEY, [hotelID] INTEGER FOR
USE [zachtravelagency]
CREATE TABLE package (
[packageID] INTEGER NOT NULL IDENTITY (1,1) PRIMARY KEY,
[hotelID] INTEGER FOREIGN KEY REFERENCES hotels NOT NULL,
[excursionID] INTEGER FOREIGN KEY REFERENCES excursions NOT NULL,
[transportID] INTEGER FOREIGN KEY REFERENCES transport NOT NULL,
[flightID] INTEGER FOREIGN KEY REFERENCES flight NOT NULL,
);
以下是列,后面是一些空值,因为我不确定要输入什么
Insert Into package (packageID, hotelID, excursionID, transportID, flightID)
Values (1, '', '', '', '')
以下是将数据输入我的“hotel”表的示例(这是一行的示例)
我是SQL新手,所以感谢您的耐心 显然,您总共需要创建五个表。由于存在外键,您必须最后在packages表中插入数据。让我们假设所有这些都已完成,您现在想要查询 如果你得到了包裹ID,那么你已经得到了答案。我不知道你说的是什么意思。如果您想要在西班牙拥有酒店的套餐的最低成本,请执行以下操作:
select min(h.totalCost)
from package as p inner join hotels as h on h.hotelID = p.hotelID
where h.location = 'Spain'
如果你想要一个包含西班牙酒店的最低成本套餐,试试这个。它可以匹配多个:
select * from package where hotelID in (
select hotelID from hotels where totalCost = (
select min(h.totalCost)
from package as p inner join hotels as h on h.hotelID = p.hotelID
where where p.packageID = ? and h.location = 'Spain'
)
)
显然,您需要总共创建五个表。由于存在外键,您必须最后在packages表中插入数据。让我们假设所有这些都已完成,您现在想要查询 如果你得到了包裹ID,那么你已经得到了答案。我不知道你说的是什么意思。如果您想要在西班牙拥有酒店的套餐的最低成本,请执行以下操作:
select min(h.totalCost)
from package as p inner join hotels as h on h.hotelID = p.hotelID
where h.location = 'Spain'
如果你想要一个包含西班牙酒店的最低成本套餐,试试这个。它可以匹配多个:
select * from package where hotelID in (
select hotelID from hotels where totalCost = (
select min(h.totalCost)
from package as p inner join hotels as h on h.hotelID = p.hotelID
where where p.packageID = ? and h.location = 'Spain'
)
)
在包表中输入什么样的数据确实很难帮助您。它可以是任何东西。只要数据的类型与您为每个列提供的类型相同,就可以使用相同的数据类型。因为包表中的所有列都是整数,所以可以添加任意数字。不过,不要把它们放在“”中。这让他们很紧张。例如,我将写以下内容将数据插入包表:
Insert Into package (packageID, hotelID, excursionID, transportID, flightID)
Values (1, 777, 7777, 4444) -- Doesn't matter what value you put, unless you have other Hotel, Excursion, Transport and Flight table which contains Id as primary key, then you need to use that.
同样,您可以在两个表中插入更多记录。之后,使用shawnt00下面用户提供的查询,它应该会返回一些结果。很难帮助您确定应该在Package表中输入哪些数据。它可以是任何东西。只要数据的类型与您为每个列提供的类型相同,就可以使用相同的数据类型。因为包表中的所有列都是整数,所以可以添加任意数字。不过,不要把它们放在“”中。这让他们很紧张。例如,我将写以下内容将数据插入包表:
Insert Into package (packageID, hotelID, excursionID, transportID, flightID)
Values (1, 777, 7777, 4444) -- Doesn't matter what value you put, unless you have other Hotel, Excursion, Transport and Flight table which contains Id as primary key, then you need to use that.
同样,您可以在两个表中插入更多记录。然后,使用用户在shawnt00下面提供的查询,它应该会返回一些结果。首先,对于“package”的insert语句,您不需要指定packageId,因为它是一个标识列。相反,它应该看起来像这样
Insert Into package (hotelID, excursionID, transportID, flightID)
Values (1, 54, 43, 23)
然后,要运行SELECT查询以查找到西班牙的最便宜套餐,您必须在套餐上加入您的酒店、游览、交通和航班表,并将每个表中的总成本相加
例如:
SELECT p.*, (h.totalCost + e.totalCost + t.totalCost, f.totalCost) as 'Total Package Cost' FROM Package p
INNER JOIN hotel h ON h.hotelId = p.hotelId
INNER JOIN excursion e ON e.excursionId = p.excursionId
INNER JOIN transport t ON t.transportId = p.transportId
INNER JOIN flight f ON f.flightId = p.flightId
WHERE h.location = 'Spain'
ORDER BY (h.totalCost + e.totalCost + t.totalCost, f.totalCost) ASC
您最便宜的套餐将首先列出。如果您只想要最便宜的,那么您可以使用SELECT TOP 1
此查询还假设每个表都有一个totalCost列 首先,对于“package”的insert语句,您没有指定packageId,因为它是一个标识列。相反,它应该看起来像这样
Insert Into package (hotelID, excursionID, transportID, flightID)
Values (1, 54, 43, 23)
然后,要运行SELECT查询以查找到西班牙的最便宜套餐,您必须在套餐上加入您的酒店、游览、交通和航班表,并将每个表中的总成本相加
例如:
SELECT p.*, (h.totalCost + e.totalCost + t.totalCost, f.totalCost) as 'Total Package Cost' FROM Package p
INNER JOIN hotel h ON h.hotelId = p.hotelId
INNER JOIN excursion e ON e.excursionId = p.excursionId
INNER JOIN transport t ON t.transportId = p.transportId
INNER JOIN flight f ON f.flightId = p.flightId
WHERE h.location = 'Spain'
ORDER BY (h.totalCost + e.totalCost + t.totalCost, f.totalCost) ASC
您最便宜的套餐将首先列出。如果您只想要最便宜的,那么您可以使用SELECT TOP 1
此查询还假设每个表都有一个totalCost列 不,这是我大学模块的一部分,我真的被困在如何去做这件事上了!不,这是我大学模块的一部分,我真的被困在如何去做这件事上了!好的,伙计,太棒了。如何处理在包表的所有列中具有最低值的包。例如,旅馆,旅游,交通和飞行?好的,伙计,太棒了。如何处理在包表的所有列中具有最低值的包。例如,酒店、远足、交通和航班?