Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询帮助_Sql_Sql Server_Insert - Fatal编程技术网

SQL查询帮助

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

我想创建一个查询,在给定包ID的情况下,查询到西班牙度假的最便宜包。在执行查询时,我只想知道如何进行查询。我需要关于“package”表的值中包含哪些内容的帮助,以及关于如何显示查询的帮助

这是表格:

    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列

不,这是我大学模块的一部分,我真的被困在如何去做这件事上了!不,这是我大学模块的一部分,我真的被困在如何去做这件事上了!好的,伙计,太棒了。如何处理在包表的所有列中具有最低值的包。例如,旅馆,旅游,交通和飞行?好的,伙计,太棒了。如何处理在包表的所有列中具有最低值的包。例如,酒店、远足、交通和航班?