![]() |
WHERE-Klausel mit GROUP kombinieren
Guten Morgen!
Folgendes Problem: Ich will eine GROUP-Klausel auf eine Tabelle anwenden, aber Datensätze ausschliessen, die einen bestimmten Wert enthalten. Ein "HAVING" nach dem GROUP filtert aber erst die Datensätze, NACHDEM sie gruppiert wurden. Das führt i m Endeffekt aber zu einer falschen Ergebnismenge. Beispiel: Artikel Summe Ausschluss A 1,0 X B 3,5 C 2,0 X Wenn ich jetzt mit GROUP BY artikel / HAVING aussschlus <> X arbeite, wird Artikel C vernachlässigt. Warum ist klar. Ich müsste also erst die Datenmenge mit SELECHT / WHERE filtern, und darauf dann die GROUP-Anweisung ausführen können. Nur wie? Danke euch! |
Re: WHERE-Klausel mit GROUP kombinieren
kannst du nur mit einem view machen, z.B in access
|
Re: WHERE-Klausel mit GROUP kombinieren
hallo tyler,
welche db und welcher zugriff? zeig mal dein sql - schon mal die variante von waschi probiert? raik |
Re: WHERE-Klausel mit GROUP kombinieren
Oder du machst ein Subselekt á la:
SQL-Code:
SELECT .. FROM (SELECT .. WHERE foo) GROUB BY bar
|
Re: WHERE-Klausel mit GROUP kombinieren
also ds SUBSELECT von Fiasko sieht schonmal ganz vielversprechend aus:
Hier mal die aktuelle Query:
Delphi-Quellcode:
Das funktioniert ja auch soweit. Die gleichen Artikel werden zusammen gezählt, und ich sehe in der Übersicht (QReport) wieviel ich von einem bestimmten Artikel des Herstellers verkauft habe.
Query.SQL.Text := 'SELECT mj.liefercode, SUM(mj.stckpreigs) AS Gesamt, ' +
' mj.lfsnrliefr, mj.artiklnumr, mj.datum, mb.text, mj.stueck ' + ' FROM b_matjournal04 AS mj ' + ' JOIN b_matbestand AS mb ON mb.artiklnumr = mj.artiklnumr ' + ' GROUP BY artiklnumr HAVING upper(liefercode) = ' + QuotedStr( AnsiUpperCase( Edit2.Text ) ) + Query.Open; Nun fehlt aber ein Ausschluss: Anfang des Jahres gibt es sog. Korrekturbuchungen, die im Feld LFSNRLIEFR mit "Inventur" gebucht wurden. Die muss ich aus der gesamten Menge raushalten. Und wie oben schon erwähnt, nehme ich diesen Ausschlus in den HAVING-Bereich mit auf, werden einige ARtikel verschluckt. Danke euch erstmal! tyler //EDIT achja, ich greife über ZEOS auf MySQL zu, und da gibts btw auch keine SubSelects :( |
Re: WHERE-Klausel mit GROUP kombinieren
Ich kenne zwar mySQL nicht gut genug, aber bei Oracle weiß ich ganz gut bescheid.
Geht es denn nicht ganz einfach so:
SQL-Code:
Oder habe ich das Problem einfach nicht verstanden?
select * from ...
where .... and Ausschluss <> 'X' group by ... |
Re: WHERE-Klausel mit GROUP kombinieren
doch, prinzip ist der Ansatz richtig, nur ist es mit MySQL so ohne weiteres nicht möglich eine GROUP-Anweisung mit einer WHERE -Anweisung zu mischen. :)
|
Re: WHERE-Klausel mit GROUP kombinieren
Zitat:
MySQL sollte doch in neueren Versionen Views unterstützen, dann mach es doch so.
SQL-Code:
und mache dann das GROUPING über den View.
CREATE VIEW foo AS SELECT ... FROM bar WHERE ...
|
Re: WHERE-Klausel mit GROUP kombinieren
Sehr gute Idee, bin auch schon auf "CREATE VIEW" gestossen :)
Lade mir in dem Moment das 5´er Release runter, und schau mal wie das funktioniert :) Danke soweit für die Unterstützung |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 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