计算两个语句

时间:2017-04-08 12:03:12

标签: mysql sql

我有两个陈述,我想计算他们的价值观。两个值都必须计算5 - 5 =(我想看到答案0)

SELECT COUNT(*) AS 'Aantal stoelen geboekt'
FROM Boekingsregel, Vlucht
WHERE Boekingsregel.Vlucht_Vlucht_Id = Vlucht.Vlucht_Id
AND Vlucht_Datum = '2017-04-10';

SELECT min(Vliegtuig_Aantal_Stoelen) AS 'Max aantal stoelen'
FROM Vliegtuig;

2 个答案:

答案 0 :(得分:0)

首先,学会使用正确的JOIN语法。

其次,将这些结合在FROM子句中。

SELECT COUNT(*) AS AantalStoelenGeboekt, vt.MaxAantalStoelen
FROM Boekingsregel b JOIN
     Vlucht v
     ON b.Vlucht_Vlucht_Id = v.Vlucht_Id CROSS JOIN
     (SELECT min(Vliegtuig_Aantal_Stoelen) AS MaxAantalStoelen
      FROM Vliegtuig
     ) vt
WHERE v.Vlucht_Datum = '2017-04-10';

注意:MySQL允许这种语法。也许更简洁的方法是在MaxAantalStoelen上使用聚合函数:

SELECT COUNT(*) AS AantalStoelenGeboekt,
       MAX(vt.MaxAantalStoelen) as MaxAantalStoelen
FROM Boekingsregel b JOIN
     Vlucht v
     ON b.Vlucht_Vlucht_Id = v.Vlucht_Id CROSS JOIN
     (SELECT min(Vliegtuig_Aantal_Stoelen) AS MaxAantalStoelen
      FROM Vliegtuig
     ) vt
WHERE v.Vlucht_Datum = '2017-04-10';

答案 1 :(得分:0)

虽然我没有看到两个查询的任何关系,但您也不应该使用带空格的别名。让你的别名尽可能短,但可以定义它所拥有的值,但由于这是你的查询,你比我更了解。

至于你的问题,你可以把这两个问题合并成一个这样的东西:

SELECT BR.`Aantal stoelen geboekt` - VT.`Max aantal stoelen` AS TheResult 
FROM (SELECT COUNT(*) AS `Aantal stoelen geboekt` 
FROM Boekingsregel, Vlucht 
WHERE Boekingsregel.Vlucht_Vlucht_Id = Vlucht.Vlucht_Id 
AND Vlucht_Datum = '2017-04-10') BR,
(SELECT min(Vliegtuig_Aantal_Stoelen) AS `Max aantal stoelen` FROM Vliegtuig) VT;

注意:未经测试我只需在此输入。

如果这不是你想要的,那么也许你应该更详细地解释你的要求,这样每个人都能理解并且能够帮助你。