AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Berechnungsfehler ?

Ein Thema von haentschman · begonnen am 16. Mai 2013 · letzter Beitrag vom 16. Mai 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.428 Beiträge
 
Delphi 12 Athens
 
#1

Berechnungsfehler ?

  Alt 16. Mai 2013, 10:35
Datenbank: ElevateDB • Version: ? • Zugriff über: ?
Guten Morgen...

Bitte sagt mir wer doof ist. Ich oder die DB...

select * from A -> 2824 Datensätze
select distinct * from A -> 2756 Datensätze
select * from A group by X having Count(*) = 1 -> 2694 Datensätze
select * from A group by X having Count(*) > 1 -> 62 Datensätze -> 2694 + 62 = 2756...korrekt

aaaber...
2824 - 2756 = 68 ! Wo sind meine 6 Datensätze?

...ich mache mir erst mal nen Kaffee. Vieleicht hilfts.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

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

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 10:49
statt
Code:
select distinct * from A
evtl.

Code:
select distinct X from A
?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.428 Beiträge
 
Delphi 12 Athens
 
#3

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 10:50
Danke für deine Antwort.

Das *, damit alle Felder einbezogen werden und damit der gesamte Datensatz eindeutig ist.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

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

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 10:51
Aber du machst doch auch einen Group by X, demnach sollte evtl auch das distinct wissen was zu gruppieren ist?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.428 Beiträge
 
Delphi 12 Athens
 
#5

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 10:55
having verlangt immer eine Gruppierung nach einem Feld. Es ist aber egal ob ich in die Gruppierung ein Feld oder alle aufnehme... es bleiben 62 Datensätze.

Zitat:
mal abgesehen von der ungewöhnlichen groub by Anweisung- nie von der DB gehört:
Du hast noch nie von group by gehört ?

Geändert von haentschman (16. Mai 2013 um 10:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 10:59
Ich kenne ElevateDB nicht, werden NULL's mit gruppiert?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
jobo

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

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 11:10
Zitat:
Du hast noch nie von group by gehört ?
Natürlich, es ging um "Select * " versus "Group by x"
Macht m.E. keinen Sinn bzw erinnert mich an mySQL mit "automatischer/intelligenter" Gruppierung, das ist Schrott.

Unabhängig davon scheint mir das Verfahren wegen der Gruppierung von Mehrfachdatensätzen falsch.
Gruß, Jo
  Mit Zitat antworten Zitat
jobo

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

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 10:53
mal abgesehen von der ungewöhnlichen groub by Anweisung- nie von der DB gehört:
Wenn Du die mehrfachen Datensätze zählst, zählst Du mit dieser Anweisung nicht die tatsächliche Zahl, sondern die Zahl der eindeutigen, aber mehrfach vorhandenen Datensätze.
Richtig wäre wohl, ein "select * from .. not in [eindeutig]" oder "[alles] minus [eindeutig]".
Gruß, Jo
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.387 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 11:16
Guten Morgen...

Bitte sagt mir wer doof ist. Ich oder die DB...

select * from A -> 2824 Datensätze
select * from A group by X having Count(*) > 1 -> 62 Datensätze -> 2694 + 62 = 2756...korrekt
Du hast 62 Datensätze die mehr als einmal da sind, d.h. da wird es wohl auch ein paar geben, die mehr als 2x da sind.. daher dann der Unterschied

du lässt dir in der unteren Abfrage ja nur die DS ausgeben, die mehr als einmal da sind. Mach mal ein
Code:
select * from A group by X having Count(*) > 2
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.599 Beiträge
 
Delphi 12 Athens
 
#10

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 11:23
Du hast 62 Datensätze die mehr als einmal da sind, d.h. da wird es wohl auch ein paar geben, die mehr als 2x da sind.. daher dann der Unterschied

du lässt dir in der unteren Abfrage ja nur die DS ausgeben, die mehr als einmal da sind.
Richtig! Und die werden bei der Gruppierung eben zu einem Datensatz zusammengefasst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 01:44 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 by Thomas Breitkreuz