Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 - Fatal编程技术网

Sql 您可以在另一个查询中使用从查询中获得的数据吗?

Sql 您可以在另一个查询中使用从查询中获得的数据吗?,sql,sql-server,Sql,Sql Server,假设我从SELECT查询中获得了一些数据。我可以稍后将其用作表吗,这意味着将其命名为某物,然后在其他查询中使用其行和列 我不能用我的生命来解决这个问题。我是初学者。这只是一个表,但我就是不能让查询工作。以下是我所拥有的: 酒店桌子和房间桌子(我只需要使用房间桌子;我提到的酒店只是作为理解的参考点) 房间有以下列:(数字,HID)-这是一个复合主键;Number是房间的数字,HID是房间所属酒店的ID。我还有一个专栏,名字。现在的问题是: 查找所有只有一间卧室的酒店 我尝试了(但失败了)从房间中选

假设我从SELECT查询中获得了一些数据。我可以稍后将其用作表吗,这意味着将其命名为某物,然后在其他查询中使用其行和列

我不能用我的生命来解决这个问题。我是初学者。这只是一个表,但我就是不能让查询工作。以下是我所拥有的:

酒店桌子和房间桌子(我只需要使用房间桌子;我提到的酒店只是作为理解的参考点)

房间有以下列:(数字,HID)-这是一个复合主键;Number是房间的数字,HID是房间所属酒店的ID。我还有一个专栏,名字。现在的问题是:

查找所有只有一间卧室的酒店

我尝试了(但失败了)从房间中选择所有HID,然后过滤“不存在”(至少有一个非单卧室命名房间的酒店),但我无法做到这一点

Room

Number    HID    Name

1         H1     OneBedroom
2         H2     OneBedroom
3         H1     OneBedroom
4         H1     OneBedroom
5         H2     TwoBedroom
6         H3     OneBedroom

Desired Output:    HID
           H1
           H3

我怀疑像这样的事情会起作用

SELECT DISTINCT `hid` FROM `room` WHERE
    `room`.`hid` NOT IN
        (SELECT `hid` as `hid` FROM `room` WHERE `name` != "OneBedroom");

未经测试,可能是废话,但似乎它应该工作。基本上,内部查询会获取所有非单卧室房间的
hid
。然后,我们从一个完整的
hid
列表中减去所有这些
hid

我怀疑这样做会起作用

SELECT DISTINCT `hid` FROM `room` WHERE
    `room`.`hid` NOT IN
        (SELECT `hid` as `hid` FROM `room` WHERE `name` != "OneBedroom");

未经测试,可能是废话,但似乎它应该工作。基本上,内部查询会获取所有非单卧室房间的
hid
。然后,我们从
hid
的完整列表中减去所有这些
hid

我将从您描述的内容中得到一个类似的表格:

table Room
HID    Number        Name
----------------------------------------
 1      101          OneBedroom
 1      102          OneBedroom
 1      103          TwoBedroom
 1      201          Suite
 2      101          OneBedroom
 2      102          OneBedroom
 2      103          OneBedroom
我假设它连接到一个桌子酒店:

table Hotel
HID    name
------------------
 1     StayOver
 2     SleepTite
现在进行查询:

SELECT h.name 
FROM Hotel h
WHERE h.HID NOT IN (SELECT r.HID 
FROM Room r
WHERE name != 'OneBedroom');
这会给你们一个只有一间卧室的酒店名单

使用示例数据处理SQLite。应该没问题

编辑-基于编辑的问题:

SELECT h.HID . . . 

而不是上面查询中的h.name。

我将使用您描述的如下表:

table Room
HID    Number        Name
----------------------------------------
 1      101          OneBedroom
 1      102          OneBedroom
 1      103          TwoBedroom
 1      201          Suite
 2      101          OneBedroom
 2      102          OneBedroom
 2      103          OneBedroom
我假设它连接到一个桌子酒店:

table Hotel
HID    name
------------------
 1     StayOver
 2     SleepTite
现在进行查询:

SELECT h.name 
FROM Hotel h
WHERE h.HID NOT IN (SELECT r.HID 
FROM Room r
WHERE name != 'OneBedroom');
这会给你们一个只有一间卧室的酒店名单

使用示例数据处理SQLite。应该没问题

编辑-基于编辑的问题:

SELECT h.HID . . . 

代替上面查询中的h.name。

最简单的方法是使用
groupby
plus
having
和条件
count
,因此不需要包含传统的子查询

此返回酒店包含所有
room=“one卧房”
,请记住
COUNT
仅计数
values NNLL

 SELECT `hid` 
 FROM `room`
 GROUP BY `hid`
 HAVING COUNT(CASE WHEN `name` != "OneBedroom" THEN 1 END ) = 0
至少有一间卧室被称为“一间卧室”`


CASE
的默认值为
NULL
,因此不需要
ELSE
part

最简单的方法是使用
groupby
加上
have
具有条件
计数
,因此不需要包含传统的子查询

此返回酒店包含所有
room=“one卧房”
,请记住
COUNT
仅计数
values NNLL

 SELECT `hid` 
 FROM `room`
 GROUP BY `hid`
 HAVING COUNT(CASE WHEN `name` != "OneBedroom" THEN 1 END ) = 0
至少有一间卧室被称为“一间卧室”`


CASE
的默认值为
NULL
,因此不需要
ELSE
部分

向我们显示一些示例数据和期望的输出。即,所有房间都命名为
onedoomy
的酒店,或至少有一个房间命名为
onedoomy
的酒店?这称为子查询!需要表中的一些字段名。@CollinD我不想去一家所有房间都被称为一卧室的酒店所有房间都被称为一卧室的酒店向我们展示一些示例数据并要求输出。是不是所有房间都被称为一卧室的酒店,或者至少有一个房间名为“一间卧室”的酒店,这称为子查询!需要从您的表中获取一些字段名。@柯林斯我不想去一家所有房间都被称为“一卧室”的酒店所有房间都被称为“一卧室”的酒店!斯基尔兹兄弟!多谢了!斯基尔兹兄弟!谢谢