![]() |
SQL Abfrage zusammenfassen?
hi leute,
Ich habe da 2 Abfragen, die ich gerne zusammenfassen möchte. So sehen die ursprünglichen Abfragen aus:
SQL-Code:
Die obere Abfrage liefert mir zu einer gegebenen product_id alle Produkt-Eingänge und die Untere alle Produkt-Abgänge.
SELECT SUM(productbookingpos.quantity) AS InUpToNow FROM productbookingpos
WHERE productbookingpos.prod_ID = 111 AND productbookingpos.invalid =0; SELECT SUM(invoicepos.quantity) AS OutUpToNow FROM invoicepos WHERE invoicepos.prod_ID = 111 AND invoicepos.invalid =0; Diese werden später in meinem Programm voneinander angezogen, sodass ich dann den Lagerbestand habe. Die Frage ist nur ob es möglich ist diese Differenz DIREKT in einer einzigen Abfrage zu berechnen .. und wenn ja wie geht das? Danke schonmal! mfg R. |
Re: SQL Abfrage zusammenfassen?
Hallo Polondo!
Was für ein DB-System nutzt DU? Theoretisch ist eine Zusammenfassung der beiden SQL-Statements möglich, wenn das verwendete DB-System SubSelects unterstützt. In der Praxis würde ich hier allerdings eher auf eine Stored Procedure zurückgreifen. Gruß onlinekater |
Re: SQL Abfrage zusammenfassen?
Du könntest sie zusammenjoinen:
SQL-Code:
SELECT
SUM(productbookingpos.quantity) AS InUpToNow, SUM(invoicepos.quantity) AS OutUpToNow FROM productbookingpos, invoicepos WHERE productbookingpos.prod_ID = 111 and invoicepos.prod_ID= productbookingpos.prod_ID AND productbookingpos.invalid =0 AND invoicepos.invalid =0; |
Re: SQL Abfrage zusammenfassen?
erstmal danke für die antworten!!
ich nutze den sqlserver 2000 @mkinzler genau das habe ich bereits probiert. allerdings liefert er mir einen falschen wert für meinen wareneingang. ich habe nicht herausgefunden woran das liegt?! führe ich die abfragen getrennt aus bekomme ich richtige werte. |
Re: SQL Abfrage zusammenfassen?
Der Fehler dürfte darin liegen, das bei der Abfrage mehr Daten ausgefiltert werden.
So gehts aber (vermutlich)
SQL-Code:
oder so (ist hässlich, aber syntaktisch korrekt):
SELECT
SUM(case when p.invalid = 0 then p.quantity else 0 end) AS InUpToNow, SUM(case when i.invalid = 0 then i.quantity else 0 end) AS OutUpToNow FROM productbookingpos p join invoicepos i on p.prod_ID = i.prodID WHERE p.prod_ID = 111
SQL-Code:
select
(SELECT SUM(productbookingpos.quantity) FROM productbookingpos WHERE productbookingpos.prod_ID = 111 AND productbookingpos.invalid =0) AS InUpToNow , (SELECT SUM(invoicepos.quantity) FROM invoicepos WHERE invoicepos.prod_ID = 111 AND invoicepos.invalid =0) AS OutUpToNow |
Re: SQL Abfrage zusammenfassen?
wow danke für die hilfe ;O)
funktioniert und bringt beide werte richtig aus der db. mfg R. |
Re: SQL Abfrage zusammenfassen?
Jetzt mal ne andere Frage:
Kann man eigentlich diese Teil-Abfragen hier auch direkt voneinander abziehen und als Result ausgeben?
SQL-Code:
Ich habe schon versucht beides in eine Select zu packen und die summe der differenz sozusagen zu bilden .. hat aber nicht funktioniert.
select
(SELECT SUM(productbookingpos.quantity) FROM productbookingpos WHERE productbookingpos.prod_ID = 111 AND productbookingpos.invalid =0) AS InUpToNow, (SELECT SUM(invoicepos.quantity) FROM invoicepos WHERE invoicepos.prod_ID = 111 AND invoicepos.invalid =0) AS OutUpToNow Weiß einer hierbei weiter? mfg R. |
Re: SQL Abfrage zusammenfassen?
sollte so funktionieren:
SQL-Code:
Hope it helps
select
((SELECT SUM(productbookingpos.quantity) FROM productbookingpos WHERE productbookingpos.prod_ID = 111 AND productbookingpos.invalid =0) -(SELECT SUM(invoicepos.quantity) FROM invoicepos WHERE invoicepos.prod_ID = 111 AND invoicepos.invalid =0)) AS ERGEBNIS onlinekater |
Re: SQL Abfrage zusammenfassen?
ja super funktioniert. Ich hatte vorhin die beiden AS nicht rausgenommen deswegen hat es wohl nicht funktioniert. Dank Dir!!
mfg R. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz