Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Verständnisfrage: HAVING mit Group by oder nicht? (https://www.delphipraxis.net/187971-verstaendnisfrage-having-mit-group-oder-nicht.html)

p80286 20. Jan 2016 12:28

Datenbank: oracle • Version: egal • Zugriff über: egal

Verständnisfrage: HAVING mit Group by oder nicht?
 
Hallo zusammen

um Doppeleinträge im weitesten Sinne zu finden, nutze ich immer wieder folgenden Subselect
SQL-Code:
select id
from Tabelle
having Count(*)>1
group by id
Das funktioniert ganz in meinem Sinne. Jetz sind mir (lauffähige) Sourcen über den Weg gelaufen, in denen das
SQL-Code:
Group by
fehlt.
Entsprechende Änderungen in obigen Schnipsel ziehen promt ein "ORA-00937: not a single-group group function" nach sich.
Die Oracle Hilfe "The HAVING clause of SELECT statements is unaffected by the use of GROUP BY." bringt mir da auch keine Klarheit.

Unter welchen Umständen ist denn was richtig?

Gruß
K-H

Bernhard Geyer 20. Jan 2016 12:31

AW: Verständnisfrage: HAVING mit Group by oder nicht?
 
für den Filterung ohne (vor) "group by" wird das where-Konstrukt verwendet
für die Filterung nach der Gruppierung wird das having-Konstrukt verwendet.

D.h. ohne "group by" auch kein "having"

p80286 20. Jan 2016 12:35

AW: Verständnisfrage: HAVING mit Group by oder nicht?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1327590)
D.h. ohne "group by" auch kein "having"

Sehe ich eigentlich auch so, aber es gibt Gegenbeispiele, die wirklich funktionieren.
Grund:
a) ich habe ein "Group by" übersehen,
b) es gibt irgendwo ein implizites "Group by"
c) ????

Gruß
K-H

baumina 20. Jan 2016 12:42

AW: Verständnisfrage: HAVING mit Group by oder nicht?
 
Also dass das HAVING vor dem GROUP BY kommt, finde ich auch schon sehr seltsam. HAVING kommt normalerweise immer nach dem GROUP BY. Denn es wird zuerst der komplette SELECT gemacht und auf das Ergebnis dann das HAVING angewendet.

jobo 20. Jan 2016 13:43

AW: Verständnisfrage: HAVING mit Group by oder nicht?
 
Bei Oracle ist mir vor Jahren mal ein View um die Ohren geflogen, als ich von 9 auf 10 umgestellt habe. Die Group By Anweisung im "Original" war tatsächlich falsch, lief aber immer klaglos.
Ich würde mich da nicht am Bestand orientieren, sondern an den aktuellen SQL Standards bzw. der zugehörigen Dokumentation der verwendeten Oracle Version. Die dürfte da keine Unklarheiten lassen.
1 group by
2 having

Vielleicht gibt es Sonderfälle, wo aufgrund der Select Clause (nur Aggregate) kein Group by notwendig ist und dann ein having kommen kann.

P.S.: Gerade nachgeschaut, die Reihenfolge bei Oracle ist offiziell egal. Surprise! Dann würde ich dennoch dem allgemeinen Standard folgen.

Bernhard Geyer 20. Jan 2016 16:17

AW: Verständnisfrage: HAVING mit Group by oder nicht?
 
Zitat:

Zitat von jobo (Beitrag 1327607)
Bei Oracle ist mir vor Jahren mal ein View um die Ohren geflogen, als ich von 9 auf 10 umgestellt habe. Die Group By Anweisung im "Original" war tatsächlich falsch, lief aber immer klaglos.

Wir haben schon mal mit einer fehlerhaften SQL-Query gegen eine Oracle-Datenbank das ganze Netzwerk lahm gelegt :mrgreen:

Das etwas bei Oracle funktionierte heißt nicht das das SQL-Statement auch fehlerfrei ist.

jobo 20. Jan 2016 19:37

AW: Verständnisfrage: HAVING mit Group by oder nicht?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1327611)
Wir haben schon mal mit einer fehlerhaften SQL-Query gegen eine Oracle-Datenbank das ganze Netzwerk lahm gelegt :mrgreen:
Das etwas bei Oracle funktionierte heißt nicht das das SQL-Statement auch fehlerfrei ist.

Datenbankserver lahmlegen ist ja einfach, aber wie man das Netzwerk mit einer Datenbank-Abfrage lahm legt, kann ich mir nur schwer vorstellen! Vielleicht waren es die verzweifelten Hilfe(rufe)broadcasts der Datenbank? :)
Was das SQL Statement mit Group By / Having angeht, habe ich ja nachgetragen, dass es gemäß Doku in beliebiger Reihenfolge eingesetzt werden kann. Also schlicht und ergreifend dokumentiertes Verhalten.

Bernhard Geyer 21. Jan 2016 07:42

AW: Verständnisfrage: HAVING mit Group by oder nicht?
 
Zitat:

Zitat von jobo (Beitrag 1327626)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1327611)
Wir haben schon mal mit einer fehlerhaften SQL-Query gegen eine Oracle-Datenbank das ganze Netzwerk lahm gelegt :mrgreen:
Das etwas bei Oracle funktionierte heißt nicht das das SQL-Statement auch fehlerfrei ist.

Datenbankserver lahmlegen ist ja einfach, aber wie man das Netzwerk mit einer Datenbank-Abfrage lahm legt, kann ich mir nur schwer vorstellen! Vielleicht waren es die verzweifelten Hilfe(rufe)broadcasts der Datenbank? :)

Oracle (irgendein Netzwerktreiber von denen) hat den Server lahmgelegt und dieser hatte auch noch einige (Oracle-Unabhängige) Netzwerkaufgaben zu erledigen.

jobo 21. Jan 2016 08:33

AW: Verständnisfrage: HAVING mit Group by oder nicht?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1327658)
Oracle (irgendein Netzwerktreiber von denen) hat den Server lahmgelegt und dieser hatte auch noch einige (Oracle-Unabhängige) Netzwerkaufgaben zu erledigen.

Legendenbildung, eines meiner Lieblingsthemen

Ich kann mir nicht vorstellen, dass eine Oracle Datenbank mit eigenen Netzwerktreibern kommt. Meinst Du vielleicht deren Linux Red Had Distribution? (Anmerkung: Oracle ist ein Firmenname, diese Firma bietet vorsichtig geschätzt hunderte Produkte an.)

Außerdem würde ich in solch einem Fall nicht davon sprechen, dass das Netzwerk lahmgelegt ist, sondern der Zugriff auf den Server - wenn ich das nun richtig verstanden habe. (Falls es der einzige Server im Netz war, hat es sich vielleicht anders angefühlt)
Ich frag mich, wem Deine nebulösen Aussagen etwas bringen sollen, zumal Du ja mit der Materie vertraut bist.

p80286 21. Jan 2016 11:23

AW: Verständnisfrage: HAVING mit Group by oder nicht?
 
[OT]
Zitat:

Zitat von Bernhard Geyer (Beitrag 1327658)
Oracle (irgendein Netzwerktreiber von denen) hat den Server lahmgelegt und dieser hatte auch noch einige (Oracle-Unabhängige) Netzwerkaufgaben zu erledigen.

Zitat:

Zitat von jobo (Beitrag 1327661)
Ich frag mich, wem Deine nebulösen Aussagen etwas bringen sollen, zumal Du ja mit der Materie vertraut bist.

Einfach mal versuchen, den täglichen Frust über die Unwägbarkeiten von (Fremd-)Software zu formulieren? [/OT]

Ich hab mir gestern Abend nochmal meine Beispielsourcen heraus gesucht, es handelte sich um einen "Einspalter", da ist das "Group by" ja nicht notwendig.

Vielen Dank
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr.
Seite 1 von 2  1 2      

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