MySQL中有趣的带条件查询

MySQL中有趣的带条件查询,mysql,sql,database,Mysql,Sql,Database,问题是: 管理层想知道哪些特定飞机始终分配到同一机库批次,每架飞机分配到同一批次仅一年,然后根据要求更新。但该地段在续期时可能是或可能不是同一地段;批次pk表是注册号和指定日期。列出飞机注册号、机库位置、机库容量。每架飞机在您的报告中只应出现一次 这是一张表: 标段编号、机库编号、登记编号、分配日期 ‘7706’、‘1’、‘505’、‘2011-07-17’ '7707', '1', '505', '2012-07-18' '7708', '1', '505', '2013-12-22' '88

问题是:

管理层想知道哪些特定飞机始终分配到同一机库批次,每架飞机分配到同一批次仅一年,然后根据要求更新。但该地段在续期时可能是或可能不是同一地段;批次pk表是注册号和指定日期。列出飞机注册号、机库位置、机库容量。每架飞机在您的报告中只应出现一次

这是一张表:

标段编号、机库编号、登记编号、分配日期

‘7706’、‘1’、‘505’、‘2011-07-17’ '7707', '1', '505', '2012-07-18' '7708', '1', '505', '2013-12-22' '8801', '2', '101', '2011-01-22' '8802', '2', '101', '2012-01-22' '8803', '2', '303', '2011-01-10' '8803', '2', '202', '2011-04-12' '8803', '2', '202', '2012-04-12' '9902', '3', '303', '2012-01-10' '9904', '3', '404', '2011-01-10' “9905”、“3”、“404”、“2012-01-10”

这是机库的桌子:

机库编号、位置、容量、经理编号

“1”、“南RW”、“24”、“902” ‘2’、‘北RW’、‘12’、‘902’ ‘3’、‘西RW’、‘25’、‘902’

这是飞机桌:可能需要

注册编号、飞机类型、制造商、居民、日期服务 ‘101’、‘SE’、‘道具’、‘李尔王’、‘1’、‘1998-12-01’ ‘202’、‘DE Prop’、‘塞斯纳’、‘1’、‘1999-11-22’ ‘303’、‘东南喷气’、‘庞巴迪’、‘1’、‘2000-07-06’ “404”,“我的飞机”,“李尔王”,“1”,“2001-02-24” ‘505’、‘东南道具’、‘塞斯纳’、‘0’、‘2003-12-01’ ‘606’、‘DE Prop’、‘庞巴迪’、‘1’、‘2004-11-22’ ‘707’、‘东南航空’、‘李尔王’、‘1’、‘2005-07-06’ ‘808’、‘ME Jet’、‘塞斯纳’、‘0’、‘2005-02-24’ ‘909’、‘SE道具’、‘庞巴迪’、‘1’、‘2002-02-12’

我想要的查询正是:

注册编号、位置、容量 ‘202’、‘北RW’、‘12’

以下是我尝试过的:

我的问题是:

如上所示,我想在结果中显示带有reg_nbr'202'的飞机,因为它是唯一一架每次分配相同批次的飞机,但不幸的是,我的做法是,在WHERE子句中写入reg_nbr='202',而不是查询的方式。我想通过一个真实合法的查询来展示如何得到这个结果。非常感谢您的努力。

大概,注册号是为飞机准备的。您可以使用单个表、group by和having子句获得飞机:


您的查询正在运行,仅显示202架飞机谢谢,但仅此部分是必需的。非常感谢:D:D:D生活品味选择reg_nbr、hangar_nbr、lot_nbr,按reg_nbr分组,MAXhangar_nbr=MINhangar_nbr和MAXlot_nbr=MINlot_nbr
SELECT lots.reg_nbr, location, capacity 
FROM hangar, lots 
WHERE lots.hangar_nbr = hangar.hangar_nbr AND reg_nbr='202'
GROUP BY lots.reg_nbr    
SELECT reg_nbr, hangar_nbr, lot_nbr
FROM lots 
GROUP BY reg_nbr
HAVING MAX(hangar_nbr) = MIN(hangar_nbr) AND
       MAX(lot_nbr) = MIN(lot_nbr)
SELECT reg_nbr
FROM lots
GROUP BY reg_nbr
HAVING COUNT(DISTINCT lot_nbr) = 1