![]() |
Datenbank: mysql • Version: 5.5 • Zugriff über: UniDAC
SQL : select mit Fallabfrage
Ich habe folgende SQL-Abfrage:
Code:
Zusätzlich brauche ich : AnzFehlt muss 0 werden, wenn AnzFehlt < 0 ist.
SELECT (coalesce(sum(sl.Anzahl),0) -
coalesce((SELECT sum(lesl.Anzahl) FROM TBLLESL lesl WHERE sl.plmartid=lesl.plmartid AND au.auid=lesl.auid GROUP BY lesl.PLMARTID),0)) AnzFehlt FROM TBLAUPLM au LEFT JOIN TBLPLMAUSL sl ON au.plmauid=sl.plmauid WHERE sl.BuchTyp is NULL AND au.auid=:AUID AND sl.PLMARTID=:PLMARTID GROUP BY sl.PLMARTID Kann ich denn ein IF verwenden ohne den lesl-select 2mal machen zu müssen? Oder wie mach ich das am Besten? *schlauch* |
AW: SQL : brauche Hilfe bei Abfrage
Schreib dir eine STORED FUNCTION die 2 Parameter entgegennimmt und von beiden den Höchstwert zurück liefert ;)
|
AW: SQL : brauche Hilfe bei Abfrage
OK, das hab ich noch nie gemacht. Muss mich da erst mal reinlesen. Aber nur zu meinem Verständis: wenn ich eine solche stored function schreibe und die dann in meinen select-Befehl einbaue, muss ich dann den lesl-select nicht auch 2mal aufrufen?
EDIT: ach ne, habs glaub kapiert. Dann les ich mich mal in die stored functions ... danke nochmal, schönes Wochenende. nochmal EDIT: wäre das nicht das selbe wie GREATEST und ich müsste den lesl-select aber auch 2mal ausrühren? Ich bin wochenendreif und gebs für heute auf. |
AW: SQL : brauche Hilfe bei Abfrage
Die Funktion gibt es schon.
![]() Du kannst ja die Selects verschachteln, der eine Parameter der greatest Funktion wäre einfach die 0. |
AW: SQL : brauche Hilfe bei Abfrage
Ja danke, ich werds am Montag mit GREATEST versuchen, indem ich folgende 2 Werte mitgeb:
1. 0 2. den select das müsst doch klappen. |
AW: SQL : brauche Hilfe bei Abfrage
Zitat:
Zitat:
SQL-Code:
SELECT GREATEST( 0,
(coalesce(sum(sl.Anzahl),0) - coalesce((SELECT sum(lesl.Anzahl) FROM TBLLESL lesl WHERE sl.plmartid=lesl.plmartid AND au.auid=lesl.auid GROUP BY lesl.PLMARTID),0)) ) AnzFehlt FROM TBLAUPLM au LEFT JOIN TBLPLMAUSL sl ON au.plmauid=sl.plmauid WHERE sl.BuchTyp is NULL AND au.auid=:AUID AND sl.PLMARTID=:PLMARTID GROUP BY sl.PLMARTID |
AW: SQL : brauche Hilfe bei Abfrage
Zitat:
;) Und ja, gemeint war, Du >kannst< Selects verschachteln, >musste< aber hier nicht. |
AW: SQL : brauche Hilfe bei Abfrage
Zitat:
Meinen Beitrag habe ich editiert, damit der Bezug klarer wird ;) |
AW: SQL : select mit Fallabfrage
Die Unterabfrage ist nicht sauber:
SQL-Code:
Durch das GROUP BY können potentiell mehrere Datensätze entstehen.
SELECT sum(lesl.Anzahl)
FROM TBLLESL lesl WHERE sl.plmartid=lesl.plmartid AND au.auid=lesl.auid GROUP BY lesl.PLMARTID) Wegen der Verwendung als Unterabfrage ist aber hier nur ein Datensatz erlaubt. Die GROUP BY Klausel muss da weg. |
AW: SQL : select mit Fallabfrage
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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