AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage zusammenfassen?

Ein Thema von polondo · begonnen am 5. Aug 2006 · letzter Beitrag vom 5. Aug 2006
Antwort Antwort
polondo

Registriert seit: 1. Sep 2005
84 Beiträge
 
#1

SQL Abfrage zusammenfassen?

  Alt 5. Aug 2006, 11:00
hi leute,

Ich habe da 2 Abfragen, die ich gerne zusammenfassen möchte.

So sehen die ursprünglichen Abfragen aus:

SQL-Code:
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;
Die obere Abfrage liefert mir zu einer gegebenen product_id alle Produkt-Eingänge und die Untere alle Produkt-Abgänge.

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.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#2

Re: SQL Abfrage zusammenfassen?

  Alt 5. Aug 2006, 11:19
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
Thomas Breitkreuz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: SQL Abfrage zusammenfassen?

  Alt 5. Aug 2006, 11:22
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;
Markus Kinzler
  Mit Zitat antworten Zitat
polondo

Registriert seit: 1. Sep 2005
84 Beiträge
 
#4

Re: SQL Abfrage zusammenfassen?

  Alt 5. Aug 2006, 11:34
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.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: SQL Abfrage zusammenfassen?

  Alt 5. Aug 2006, 11:49
Der Fehler dürfte darin liegen, das bei der Abfrage mehr Daten ausgefiltert werden.
So gehts aber (vermutlich)
SQL-Code:
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
oder so (ist hässlich, aber syntaktisch korrekt):
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
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
polondo

Registriert seit: 1. Sep 2005
84 Beiträge
 
#6

Re: SQL Abfrage zusammenfassen?

  Alt 5. Aug 2006, 11:52
wow danke für die hilfe ;O)
funktioniert und bringt beide werte richtig aus der db.

mfg R.
  Mit Zitat antworten Zitat
polondo

Registriert seit: 1. Sep 2005
84 Beiträge
 
#7

Re: SQL Abfrage zusammenfassen?

  Alt 5. Aug 2006, 19:30
Jetzt mal ne andere Frage:

Kann man eigentlich diese Teil-Abfragen hier auch direkt voneinander abziehen und als Result ausgeben?

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
Ich habe schon versucht beides in eine Select zu packen und die summe der differenz sozusagen zu bilden .. hat aber nicht funktioniert.
Weiß einer hierbei weiter?

mfg R.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#8

Re: SQL Abfrage zusammenfassen?

  Alt 5. Aug 2006, 20:42
sollte so funktionieren:

SQL-Code:
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
Hope it helps

onlinekater
Thomas Breitkreuz
  Mit Zitat antworten Zitat
polondo

Registriert seit: 1. Sep 2005
84 Beiträge
 
#9

Re: SQL Abfrage zusammenfassen?

  Alt 5. Aug 2006, 21:00
ja super funktioniert. Ich hatte vorhin die beiden AS nicht rausgenommen deswegen hat es wohl nicht funktioniert. Dank Dir!!

mfg R.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz