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 2 von 2     12   
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#11

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 p80286
p80286

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

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 11:18
Abgesehen von der nicht eindeutigen ID, könnte deine Tabelle ein View ohne ID sein?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 11:19
Warum ein select distinct * überhaupt weniger Datensätze als ein select * liefert, ist mir ein Rätsel, ausser diese mir auch unbekannte Datenbank, hat in ihren Tabellen keine eindeutigen IDs.
Das ist genau der Punkt - in der Tabelle kommen identische Datensätze mehrfach vor. Das ist aber erstmal nicht verboten.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#14

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 11:19
Du hast da einen Denkfehler.

Du hast
2694 eindeutige Datensätze und
62 Datensätze die es mehrfach gibt
insgesamt hast du also 2756 verschiedene Datensätze
(und zur wiederholung, von diesen 2756 verschiedenen gibt es 62 die jeweils mehrfach vorkommen).

Mit 2824 - 2756 = 68 weißt du nun, das in diesen 68 die 62 drin stecken, d.h. doppelt vorkommen. Dann bleiben noch 6 übrig, z.B. daher das einige der Datensätze, z.B. 6 3fach vorkommen, oder 3 die 4fach vorkommen, oder...
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

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
Benutzerbild von haentschman
haentschman

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

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 11:23
Zitat:
Warum ein select distinct * überhaupt weniger Datensätze als ein select * liefert, ist mir ein Rätsel, ausser diese mir auch unbekannte Datenbank, hat in ihren Tabellen keine eindeutigen IDs.
Zu meiner Verteidigung: Ist nicht meine DB.
Diese Tabelle, bzw. ihr Inhalt, ist nicht korrekt. Ich mache eine Analyse. Die Tabelle enthällt doppelte bzw. mehrfache identische Datensätze. Jeder Datensatz hat keine eindeutige ID. Ursprünglich sollte er in sich eindeutig sein.
Wie gesagt es geht nicht um das warum und wieso mit der Tabelle.
Ich kann mir nur die unterschiedlichen Werte nicht erklären (SQL).

DANKE ...
Zitat:
Mit 2824 - 2756 = 68 weißt du nun, das in diesen 68 die 62 drin stecken, d.h. doppelt vorkommen. Dann bleiben noch 6 übrig, z.B. daher das einige der Datensätze, z.B. 6 3fach vorkommen, oder 3 die 4fach vorkommen, oder...
...eben habe ich es noch selbst gesagt, das einige noch mehrfach vorkommen. Manchmal sieht man den Wald vor Bäumen nicht.

Tschuldigung für die Belästigung...

Geändert von haentschman (16. Mai 2013 um 11:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 11:35
Zitat:
Mit 2824 - 2756 = 68 weißt du nun, das in diesen 68 die 62 drin stecken, d.h. doppelt vorkommen. Dann bleiben noch 6 übrig, z.B. daher das einige der Datensätze, z.B. 6 3fach vorkommen, oder 3 die 4fach vorkommen, oder...
...eben habe ich es noch selbst gesagt, das einige noch mehrfach vorkommen. Manchmal sieht man den Wald vor Bäumen nicht.

Tschuldigung für die Belästigung...
Dafür hast Du ja uns
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#18

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 11:42
SQL-Code:
select X, COUNT(*) AS Anzahl from A
group by X
Summiert man die Werte im Feld "Anzahl" auf, so muss sich die Gesamtanzahl der Datensätze ergeben.
SQL-Code:
SELECT SUM(Anzahl) AS TotalAnzahl FROM
(
select X, COUNT(*) AS Anzahl from A
group by X
)
Allerdings hat die Tabelle anscheinend keinen Primärschlüssel.
Dadurch können sehr seltsame Effekte auftreten.
Es ist z.B unmöglich mit SQL gezielt und 100% sicher einen Datensatz zu löschen oder zu ändern.
Wenn in der Tabelle mehrfach gleiche Datensätze vorhanden sind, dann kann man sie mit einer Where-Bedingung nicht unterscheiden.

Schlussfolgerung:
die Tabelle ist defekt (!) und sollte nicht ohne Primarschlüssel bleiben.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

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

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 11:47
Zu meiner Verteidigung: Ist nicht meine DB.
Diese Tabelle, bzw. ihr Inhalt, ist nicht korrekt. Ich mache eine Analyse. Die Tabelle enthällt doppelte bzw. mehrfache identische Datensätze. Jeder Datensatz hat keine eindeutige ID. Ursprünglich sollte er in sich eindeutig sein.
Er macht das schon, sx2008, dazu hatte er ja uns und den Kaffee
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Berechnungsfehler ?

  Alt 16. Mai 2013, 11:49
Zitat:
Es ist z.B unmöglich mit SQL gezielt und 100% sicher einen Datensatz zu löschen oder zu ändern.
...das ist definitiv klar. Ich bin erst mal auf der Suche nach der Ursache für die fehlerhaften Daten. Die müssen ja dahin gekommen sein.

Zum Verständnis:
- Die Tabelle enthält nur Vorgaben die vom Programm lesend gebraucht werden. Sollten sich die Vorgaben ändern wurde in Vergangenheit (via Update) die komplette Tabelle neu aufgebaut. Irgend etwas ist aber schief gelaufen.

Geändert von haentschman (16. Mai 2013 um 11:53 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:13 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