AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi WHERE-Klausel mit GROUP kombinieren
Thema durchsuchen
Ansicht
Themen-Optionen

WHERE-Klausel mit GROUP kombinieren

Ein Thema von Tyler · begonnen am 1. Nov 2004 · letzter Beitrag vom 1. Nov 2004
Antwort Antwort
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#1

WHERE-Klausel mit GROUP kombinieren

  Alt 1. Nov 2004, 10:02
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!
  Mit Zitat antworten Zitat
waschi

Registriert seit: 11. Okt 2004
Ort: HH
14 Beiträge
 
#2

Re: WHERE-Klausel mit GROUP kombinieren

  Alt 1. Nov 2004, 10:10
kannst du nur mit einem view machen, z.B in access
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#3

Re: WHERE-Klausel mit GROUP kombinieren

  Alt 1. Nov 2004, 10:46
hallo tyler,

welche db und welcher zugriff?

zeig mal dein sql - schon mal die variante von waschi probiert?

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#4

Re: WHERE-Klausel mit GROUP kombinieren

  Alt 1. Nov 2004, 10:48
Oder du machst ein Subselekt á la: SELECT .. FROM (SELECT .. WHERE foo) GROUB BY bar
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#5

Re: WHERE-Klausel mit GROUP kombinieren

  Alt 1. Nov 2004, 10:53
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
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.338 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: WHERE-Klausel mit GROUP kombinieren

  Alt 1. Nov 2004, 11:35
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?
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#7

Re: WHERE-Klausel mit GROUP kombinieren

  Alt 1. Nov 2004, 11:44
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.
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#8

Re: WHERE-Klausel mit GROUP kombinieren

  Alt 1. Nov 2004, 11:49
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

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

CREATE VIEW foo AS SELECT ... FROM bar WHERE ... und mache dann das GROUPING über den View.
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#9

Re: WHERE-Klausel mit GROUP kombinieren

  Alt 1. Nov 2004, 12:36
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
  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 02:41 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