AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Lücken in fortlaufender Nummerierung finden

Lücken in fortlaufender Nummerierung finden

Ein Thema von noisy_master · begonnen am 16. Feb 2016 · letzter Beitrag vom 16. Feb 2016
Antwort Antwort
Seite 1 von 3  1 23   
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
217 Beiträge
 
Delphi XE5 Professional
 
#1

Lücken in fortlaufender Nummerierung finden

  Alt 16. Feb 2016, 13:31
Datenbank: Paradox • Version: xx • Zugriff über: BDE
Hallo Gemeinde,

wie kann ich per Query herausfinden, ob ich Lücken in meiner Nummerierung habe?

Folgender Hintergrund: ich transferiere eine Tabelle, die ein Autoinc Feld hat in eine weitere Tabelle, die an der Stelle, wo in der ursprünglichen Tabelle das Autoinc Feld hat ein Integer Feld hat.
Dabei geht manchmal was schief(oder ist zumindest in der Vergangenheit). Die ursprüngliche Tabelle wird nach dem BatchMove auch geleert, so dass ich in dieser nicht mehr kontrollieren kann.

Daher die Frage kann ich(und wenn ja wie) per SQL die Datensätze herausfinden, wo in dieser Nummerierung Lücken auftauchen?

Danke im Voraus...

P.S.: bitte keinen Kommentar zur BDE... ich weiss schon : alt, blöd, instabil,....
Dirk
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.347 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Lücken in fortlaufender Nummerierung finden

  Alt 16. Feb 2016, 13:45
Z.b. in etwa so. Hauptsache es gibt einen Index auf das Feld und nicht zu viele Datensätze.
Code:
select a.nummer-1 as fehlt from tabelle a
where not exists (select b.nummer
                  from tabelle b
                  where b.nummer = a.nummer-1)
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.797 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Lücken in fortlaufender Nummerierung finden

  Alt 16. Feb 2016, 13:45
Es ist die Frage ob LocalSQL so mächtig ist aber man könnte es mit

SQL-Code:
select
  <Feldliste>
from
  <Tabelle> t
where
  not exists ( select <pk> from <Tabelle> t2 where t2.<pk> = t.<pk> + 1);
Markus Kinzler
  Mit Zitat antworten Zitat
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
217 Beiträge
 
Delphi XE5 Professional
 
#4

AW: Lücken in fortlaufender Nummerierung finden

  Alt 16. Feb 2016, 13:59
Soweit, so gut, aber es gibt nur 1 Tabelle....und dort soll geprüft werden ob das Feld "NUMMER" Lücken aufweist...daher dürften eure Ansätze nicht funktionieren, oder habe ich da jetzt was falsch verstanden?
Dirk
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Lücken in fortlaufender Nummerierung finden

  Alt 16. Feb 2016, 14:02
Du hast was falsch verstanden.
Die SQLs der anderen waren auch nur für eine Tabelle gedacht.
Eine Tabelle kann durchaus mehrmals und unter mehreren Bezeichnungen in einer Query vorkommen

EDIT: Allerdings finden die bisher geposteten SQLs keine Lücken die größer als 1 Datensatz sind.
Kenn mich nicht mit Paradox aus aber am einfachsten ist es wahrscheinlich über eine Stored Procedure oder einen Execute Block (falls es sowas in Paradox gibt)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (16. Feb 2016 um 14:05 Uhr)
  Mit Zitat antworten Zitat
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
217 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Lücken in fortlaufender Nummerierung finden

  Alt 16. Feb 2016, 14:05
aaahhh okay, dann sorry, dass ich gemeckert habe... darum ja auch die Frage, ob ich was falsch verstanden habe.....

<knie_nieder> Schön, dass es hier so viele schlaue Leute gibt! </knie_nieder>
Dirk
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Lücken in fortlaufender Nummerierung finden

  Alt 16. Feb 2016, 14:06
aaahhh okay, dann sorry, dass ich gemeckert habe... darum ja auch die Frage, ob ich was falsch verstanden habe.....

<knie_nieder> Schön, dass es hier so viele schlaue Leute gibt! </knie_nieder>
Habe meinen Beitrag grad nochmal ergänzt. Der Code von oben findet keine Lücken die größer 1 sind.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.596 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Lücken in fortlaufender Nummerierung finden

  Alt 16. Feb 2016, 14:12
Mit einem Generator alle "IDs" im gewünschten Bereich (z.B. 1 bis greatest oder besser noch bis NextAutoInc-1) erstellen und dann im WHERE alles rausfiltern, was es gibt.
Übrig bleiben die Lücken.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.658 Beiträge
 
Delphi 7 Personal
 
#9

AW: Lücken in fortlaufender Nummerierung finden

  Alt 16. Feb 2016, 14:18
oder mit Hilfe von Delphi.
erst alle IDs holen, die es gibt, dann Liste mit IDs generieren die es geben sollte. Aus der Sollliste alles löschen was in der IstListe ist. Übrig bleiben die Lücken.

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

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#10

AW: Lücken in fortlaufender Nummerierung finden

  Alt 16. Feb 2016, 14:30
hallo,

Zitat:
oder mit Hilfe von Delphi.
erst alle IDs holen, die es gibt, dann Liste mit IDs generieren die es geben sollte. Aus der Sollliste alles löschen was in der IstListe ist. Übrig bleiben die Lücken.
Also ich würde auch behaupten, mit reinem deskriptiven SQL ist das nicht möglich. Das wäre so, als würde ich zum Bäcker gehen und sagen "Geben Sie mir mal bitte alle Brotsorten, die Sie nicht führen". Ich müsste ja zumindestens in einer anderen Tabelle definieren, welche Schlüssel vorhanden sein müssten.

Falls jemand doch noch eine SQL-Lösung findet, wäre ich sehr gespannt.

mfg
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 04:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf