Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi WHERE-Klausel mit GROUP kombinieren (https://www.delphipraxis.net/33066-where-klausel-mit-group-kombinieren.html)

Tyler 1. Nov 2004 10:02


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!

waschi 1. Nov 2004 10:10

Re: WHERE-Klausel mit GROUP kombinieren
 
kannst du nur mit einem view machen, z.B in access

kiar 1. Nov 2004 10:46

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

fiasko 1. Nov 2004 10:48

Re: WHERE-Klausel mit GROUP kombinieren
 
Oder du machst ein Subselekt á la:
SQL-Code:
SELECT .. FROM (SELECT .. WHERE foo) GROUB BY bar

Tyler 1. Nov 2004 10:53

Re: WHERE-Klausel mit GROUP kombinieren
 
also ds SUBSELECT von Fiasko sieht schonmal ganz vielversprechend aus:

Hier mal die aktuelle Query:

Delphi-Quellcode:
  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;
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.

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 :(

Jasocul 1. Nov 2004 11:35

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:
select * from ...
where ....
and Ausschluss <> 'X'
group by ...
Oder habe ich das Problem einfach nicht verstanden?

Tyler 1. Nov 2004 11:44

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. :)

fiasko 1. Nov 2004 11:49

Re: WHERE-Klausel mit GROUP kombinieren
 
Zitat:

Zitat von Tyler
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. :)

Das ist genau der Grund warum ich MySQL niemals verwende... es hat eine grauenhafte SQL Unterstützung :evil:

MySQL sollte doch in neueren Versionen Views unterstützen, dann mach es doch so.

SQL-Code:
CREATE VIEW foo AS SELECT ... FROM bar WHERE ...
und mache dann das GROUPING über den View.

Tyler 1. Nov 2004 12:36

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 14:28 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