2010-12-14 13 views
2

Ich habe Probleme, herauszufinden, wie man zwei SQL-Abfragen zu einer einzigen kombinieren kann, die eine größere Idee ausdrückt.Wie kombiniere ich mehrere SQL-Abfragen?

Nehmen wir zum Beispiel an, dass ich die Abfrage A und die Abfrage B habe. Abfrage A gibt die Gesamtzahl der geleisteten Stunden zurück. Abfrage B gibt die Gesamtzahl der Stunden zurück, die Arbeitern zur Verfügung standen. Jede dieser Abfragen gibt eine einzelne Spalte mit einer einzelnen Zeile zurück.

Was ich wirklich will, ist im Wesentlichen Abfrage A über Abfrage B. Ich möchte den Prozentsatz der Kapazität wissen, die gearbeitet wurde.

Ich weiß, wie man Abfrage A und B unabhängig schreibt, aber mein Problem kommt, wenn ich versuche herauszufinden, wie diese vorgefertigten Abfragen verwenden, um eine neue SQL-Abfrage zu erstellen, die sie zusammen verwendet. Ich weiß, dass ich auf einer höheren Ebene, wie etwa in einem Bericht, einfach beide Abfragen aufrufen und sie dann teilen kann, aber ich würde lieber alles in eine einzige SQL-Abfrage einbeziehen.

Was ich suche ist eine allgemeine Idee, wie diese Abfragen mit SQL kombiniert werden.

Danke!

+0

Anstatt zu versuchen, dies abstrakt zu beantworten, posten Sie Ihre Fragen und lassen Sie uns mit diesem speziellen Fall beschäftigen. –

Antwort

6

Unconstrained JOIN, Kartesisches Produkt von 1 Zeile 1 Zeile

SELECT worked/available AS PercentageCapacity 
FROM (SELECT worked FROM A), 
    (SELECT available FROM B) 
+0

Ich habe im Wesentlichen damit zu tun. Was ich jedoch sehr wichtig fand, war das Aliasing der Spalten _als auch der Zeilen. Ich habe mich in diesem Punkt verwirrt. – Jazzepi

1

Die Antwort hängt davon ab, woher die Daten stammen.

Wenn es aus einer einzigen Tabelle kommen, könnte es etwas so einfach sein wie:

select totalHours, availableHours, (totalHours - availableHours) as difference 
from hoursTable 

Aber wenn die Daten aus separaten Tabellen kommen, müssen Sie einige Identifizierung Spalte hinzufügen, so dass die Zeilen sein können zusammengefügt, um eine nützliche Ansicht der Daten bereitzustellen.

Sie können Beispiele für Ihre Fragen veröffentlichen, damit wir Ihre Frage besser beantworten können.

+0

Ich habe die Frage mit weiteren Details und Details zu der Datenbank, mit der ich gerade arbeite, neu geschrieben. http://stackoverflow.com/questions/4474364/combining-queries-to-calculate-values ​​ – Jazzepi

1

können Sie die Abfragen abfragen:

SELECT 
    a.ID 
    a.HoursWorked/b.HoursAvailable AS UsedWork 
FROM 
    (SELECT ID, HoursWorked FROM Somewhere) a 
INNER JOIN 
    (SELECT ID, HoursAvailable FROM SomewhereElse) b 
ON 
    a.ID = b.ID 
+0

Natürlich sei vorsichtig mit dies ist das sind ganze Zahlen oder Sie haben schlechte Mathematik. – HLGEM

1

Sie können Variablen deklarieren die Ergebnisse jeder Abfrage zu speichern und kehren Sie den Unterschied:

DECLARE @first INT 
DECLARE @second INT 

SET @first = SELECT val FROM Table... 
SET @second = SELECT val FROM Table... 

SELECT @first - @second 
Verwandte Themen