2017-04-08 3 views
0

Ich habe zwei Aussagen und ich möchte ihre Werte berechnen. Beide Werte werden 5 berechnet - 5 = (Ich will die Antwort 0, um zu sehen)Berechne zwischen zwei Aussagen

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; 
+0

Beide Abfrageergebnisse haben Integer-Ausgabe? und du willst nur '@query_one_output - @ query_two_output' überprüfen? –

Antwort

0

Während ich Sie auch nicht mit Leerzeichen ein Alias ​​jede Beziehung der beiden Abfragen nicht sehen. Machen Sie Ihren Alias ​​so kurz wie möglich, aber definieren Sie, welchen Wert er enthält, aber da dies Ihre Abfrage ist, wissen Sie besser als ich.

Wie für Ihr Problem können Sie die beiden Abfragen in einem so etwas wie dies kombinieren:

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; 

HINWEIS: Nicht getestet ich es gerade hier eingeben.

Wenn dies nicht das ist, was Sie suchen, dann sollten Sie vielleicht Ihre Anforderungen genauer erklären, damit jeder sie verstehen kann und Ihnen helfen kann.

0

Zuerst lernen die richtige JOIN Syntax zu verwenden.

Zweitens, kombinieren Sie diese in der FROM Klausel.

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

Hinweis: MySQL ermöglicht diese Syntax. Vielleicht ist ein sauberer Weg ist es, eine Aggregationsfunktion auf MaxAantalStoelen zu verwenden:

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'; 
Verwandte Themen