AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Verständnisfrage: HAVING mit Group by oder nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisfrage: HAVING mit Group by oder nicht?

Ein Thema von p80286 · begonnen am 20. Jan 2016 · letzter Beitrag vom 21. Jan 2016
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

Verständnisfrage: HAVING mit Group by oder nicht?

  Alt 20. Jan 2016, 13:28
Datenbank: oracle • Version: egal • Zugriff über: egal
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 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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

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

  Alt 20. Jan 2016, 13:31
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"
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

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

  Alt 20. Jan 2016, 13:35
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 20. Jan 2016, 13:42
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.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)

Geändert von baumina (20. Jan 2016 um 13:44 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

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

  Alt 20. Jan 2016, 14:43
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#6

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

  Alt 20. Jan 2016, 17:17
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

Das etwas bei Oracle funktionierte heißt nicht das das SQL-Statement auch fehlerfrei ist.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

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

  Alt 20. Jan 2016, 20:37
Wir haben schon mal mit einer fehlerhaften SQL-Query gegen eine Oracle-Datenbank das ganze Netzwerk lahm gelegt
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#8

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

  Alt 21. Jan 2016, 08:42
Wir haben schon mal mit einer fehlerhaften SQL-Query gegen eine Oracle-Datenbank das ganze Netzwerk lahm gelegt
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

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

  Alt 21. Jan 2016, 09:33
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

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

  Alt 21. Jan 2016, 12:23
[OT]
Oracle (irgendein Netzwerktreiber von denen) hat den Server lahmgelegt und dieser hatte auch noch einige (Oracle-Unabhängige) Netzwerkaufgaben zu erledigen.
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:27 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