【问题标题】:integrating sql select statements集成sql select语句
【发布时间】:2013-11-17 19:28:27
【问题描述】:

我尝试集成多个 sql 语句:

1 -

SELECT b.name, b.address, b.city, b.state, b.zip
FROM b
WHERE b.my_ID =  '8'

2 -

SELECT DISTINCT room.room_ID, room.number, room.maxStudents
    FROM room
    WHERE room.building_ID = 
    (SELECT building_ID
    FROM building
    WHERE my_ID =  '8')

我希望将第一条语句嵌入到选择字段中,例如:

SELECT DISTINCT room.room_ID, room.number, room.maxStudents,
(SELECT b.name, b.address, b.city, b.state, b.zip
FROM b
WHERE b.my_ID =  '8')
FROM room
WHERE room.building_ID = 
(SELECT building_ID
FROM building
WHERE my_ID =  '8')

ROOM 表与 b 相关 - 每个房间都有一个字段 roo​​m.b_ID,如:

room.b_ID = b.b_ID

我已尝试在多个地方将其添加到合并声明中,但均未成功。

我想最终得到一个所有房间和房间的列表。字段以及相关字段,或者父母的字段,b.fields(b.name,b.address,b.city,b.state, b.zip)。 b 是建筑。所以每个房间都有它所在的建筑物。我想要一份所有房间及其相关建筑物的列表。每栋建筑都会有不止一个房间,所以我知道结果中会有重复的数据。理想情况下,我想要一个 BUILDING 记录,然后该建筑物中的房间如下:

Building 1: Address, city,state,zip
<tab/null>room.name, room.maxstudents,...
<tab/null>room.name, room.maxstudents,...
<tab/null>room.name, room.maxstudents,...
Building 2: Address, city,state,zip
<tab/null>room.name, room.maxstudents,...
<tab/null>room.name, room.maxstudents,...

非常感谢任何帮助或指导!

【问题讨论】:

  • 您正在将所需的输出与相应的查询混合在一起!
  • 为什么在roomquery 中需要DISTINCT
  • 为什么不直接JOIN这些表?
  • 我在哪里使用了 distinct?
  • 没关系,我不知道我在那里有 DISTINCT。对不起

标签: mysql sql subquery


【解决方案1】:

IFAIK,每个查询作为固定数量的列!

我的建议:在您的应用程序中使用类似解析输出的查询:

Building 1, Address, city, state, zip, room.name1, room.maxstudents,...
Building 1, Address, city, state, zip, room.name2, room.maxstudents,...
Building 1, Address, city, state, zip, room.name3, room.maxstudents,...
Building 2, Address, city, state, zip, room.name1, room.maxstudents,...

对于这个查询使用:

SELECT
    b.name, b.address, b.city, b.state, b.zip,
    room.room_ID, room.number, room.maxStudents
FROM b
LEFT JOIN room
ON room.building_ID = building.my_ID
ORDER BY building.name, room.room_ID;

【讨论】:

  • 那行得通。好的,所以理论上不做子选择,而是主选择语句中的所有内容,只用前缀标识它与哪个表相关联?另外,当您说解析时,您的意思是在循环中,确定建筑物名称是否是新的,如果是,则打印名称,否则,不打印任何内容?
  • 是的。您最好在列中添加建筑物 ID 以进行更好的比较。这只是一个建议。并发查询也可以!
  • LS - 两个并发查询是什么意思?谢谢.......如果我在 MVC 中发送一个查询并获取和使用结果,我可以获取和使用一个查询,因此我专注于在一个查询中获取所有需要的信息。
  • 如果您使用任何编程语言,您可以对建筑物进行一次查询,并为每栋建筑物查询房间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 2014-12-05
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
相关资源
最近更新 更多