有条件

时间:2016-05-28 18:15:19

标签: mysql sql database

以下是问题:

管理层想要知道哪个特定的飞机一直被分配到同一个机库(每架飞机只分配了一年,然后根据要求进行了更新。但是在续订时,该批次可能是也可能不是同一批次;批次表的pk是注册号和分配日期。列出飞机注册号,机库位置,机库容量。每架飞机在报告中只出现一次。

这是很多表格:

  

lot_nbr,hangar_nbr,reg_nbr,date_assigned

     

' 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'

这是机库表:

  

hangar_nbr,location,capacity,manager_nbr

     

' 1',' South RW',' 24',' 902'
  ' 2',' North RW',' 12',' 902'
  ' 3',' West RW',' 25',' 902'

这是飞机桌:(可能需要)

  

reg_nbr,plane_type,manufacturer,resident,date_service
  ' 101',' SE',' Prop',' Lear',' 1',' 1998 -12-01'
  &#39; 202&#39;,&#39; DE Prop&#39;,&#39; Cessna&#39;,&#39; 1&#39;,&#39; 1999-11-22&#39; <登记/>   &#39; 303&#39;,&#39; SE Jet&#39;,&#39; Bombardier&#39;,&#39; 1&#39;,&#39; 2000-07-06&#39; <登记/>    &#39; 404&#39; ME Jet&#39;,&#39; Lear&#39;,&#39; 1&#39;,&#39; 2001-02-24&#39; <登记/>    &#39; 505&#39;,&#39; SE Prop&#39;,&#39; Cessna&#39;,&#39; 0&#39;,&#39; 2003-12-01&#39; <登记/>    &#39; 606&#39;,&#39; DE Prop&#39;,&#39; Bombardier&#39;,&#39; 1&#39;,&#39; 2004-11-22&#39; <登记/>    &#39; 707&#39;,&#39; SE Jet&#39;,&#39; Lear&#39;,&#39; 1&#39;,&#39; 2005-07-06&#39; <登记/>   &#39; 808&#39;,&#39; ME Jet&#39;,&#39; Cessna&#39;,&#39; 0&#39;,&#39; 2005-02-24&#39; <登记/>    &#39; 909&#39;,&#39; SE Prop&#39;,&#39; Bombardier&#39;,&#39; 1&#39;,&#39; 2002-02-12&#39; < / p>

我想要的查询(完全正确):

  

reg_nbr,位置,容量
   &#39; 202&#39;,&#39; North RW&#39;,&#39; 12&#39;

以下是我尝试的内容:

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    

我的问题:

如上图所示,我想在我的结果中显示reg_nbr '202'的飞机,因为它是唯一一次每次分配相同lot_nbr的飞机,但遗憾的是我在WHERE中写reg_nbr ='202'的方式子句不是查询应该完成的方式。我想展示如何获得这个结果,但有一个真实和合法的查询。非常感谢您的努力。

2 个答案:

答案 0 :(得分:2)

据推测,{{#each hps as |hp hp_index|}} {{#power-select search=(action "searchRepo") selected=selected.[hp_index] onchange=(action (mut selected)) as |repo| }} {{repo.name}} {{/power-select}} {{/each}} 适用于飞机。您可以使用单个表reg_nbrgroup by子句获得飞机:

having

答案 1 :(得分:2)

SELECT reg_nbr
FROM lots
GROUP BY reg_nbr
HAVING COUNT(DISTINCT lot_nbr) = 1