![]() |
Datenbank: mySQL • Version: 5.6 • Zugriff über: UniDAC
mysql - fehlende Nummer bei fortlaufenden Nummern finden
Ich weiß nicht so recht wonach ich suchen soll und ob es so etwas überhaupt als SQL-Befehl gibt.
Ich habe viele Datensätze, die eigentlich in einem Feld fortlaufende Nummern haben sollte, da dem aber nicht so ist, möchte ich die Lücken finden. Sicherlich kann ich mir das mit Delphi als Schleife programmieren. Die Frage ist hier, gäbe es dafür auch einen select-Befehl? Beispiel: 100400201 100400202 100400203 100400205 100400206 100400208 Müsste mir liefern: 100400204 100400207 |
AW: mysql - fehlende Nummer bei fortlaufenden Nummern finden
1
Lead Oder Lag liefert Vorgänger/Nachfolger der angegeben Spalte bei vorgegebener Sortierung. Gibt es leider nicht in mySQL kann aber nachgebildet werden. 2.a SQL Variablen (Das gibt es m.E. nur bei mySQL, toll!) damit kann man virtuelle, laufende Reihen erzeugen und z.B. die Differenz zur zu prüfenden Spalte erzeugen 2.b man kann nur mit der Variable eine virtuelle Tabelle / View bauen und per Outer Join mit der Prüfspalte verbinden, überall wo das Ergebnis (ausgegebene Prüfspalte) Null ist, fehlt was. p.s.: Variante 1 zählt auch zu den Window Functions (Analytic Functions) wie z.B. im DB Thread von gestern hier irgendwo. |
AW: mysql - fehlende Nummer bei fortlaufenden Nummern finden
Ungetestet:
Code:
Wenn eine Lücke aber aus mehreren Zahlen besteht, wird hier nur die erste angezeigt; da müsste man ggf. noch was tun...
select
zahl + 1 as gesuchteZahl from tabelle where (zahl + 1) not in (select zahl from Tabelle) Gruß, Olli |
AW: mysql - fehlende Nummer bei fortlaufenden Nummern finden
Auch ungetestet, könnte aber die Lücken liefern
Code:
Select
t.zahl+1 as LueckeVon, (Select MIN(zahl)-1 From Tabelle Where zahl>t.zahl) as LueckeBis From tabelle t Where (Select MIN(zahl)-t.zahl From Tabelle Where zahl>t.zahl)>1 |
AW: mysql - fehlende Nummer bei fortlaufenden Nummern finden
Eine Funktion, welche alle Zahlen von MIN(Zahl) bis MAX(Zahl) prüft, ob sie existieren und die Nichtexistierenden ausgibt.
@Olli73: MAX(Zahl) sollte vielleicht ausgelassen werden, denn das Letzte hat auch keinen Nachfolger. |
AW: mysql - fehlende Nummer bei fortlaufenden Nummern finden
Danke dass ihr euch meinen Kopf zerbrochen habt! Jumpys Version habe ich nun mal genommen und rumprobiert. So scheint es zu funktionieren:
SQL-Code:
Select
t.kennung+1 as LueckeVon, (Select MIN(kennung)-1 From tblladet where kennung>t.kennung and auid=t.auid and bgid=t.bgid order by kennung) as LueckeBis From tblladet t Where auid = 3068 and bgid=699 and (Select MIN(kennung)-t.kennung From tblladet Where auid=t.auid and bgid=t.bgid and kennung>t.kennung)>1 order by Kennung |
AW: mysql - fehlende Nummer bei fortlaufenden Nummern finden
Das "Order By Kennung" in der dritten Zeile, also dem ersten Subselect ist mMn überflüssig, sollte aber bei der Query-Ausführung eh ignoriert werden.
|
AW: mysql - fehlende Nummer bei fortlaufenden Nummern finden
Hab ich weg gemacht, danke.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 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-2025 by Thomas Breitkreuz