ich habe ein kleines programmiertechnisches problem.
es gibt in meiner datenbank eine nummerierung. nicht das auto_increment, sondern eine nummer, die vom user selbst bestimmt wird.
es bietet ihm zwar immer die richtig nummer an, aber er kann selbst eingreifen und zb. nummern ändern.
ich will nun einen hinweis für den user basteln, dass er bestimmte nummern doppelt, und manche vielleicht gar nicht vergeben hat.
ich dachte ich schreibe einfach mal alle werte die der user vergeben hat aufsteigend in ein array, und eine laufende zahl dazu, dann weiß ich schon, ob sie fehler enthält oder nicht.
aber damit kann ich leider nicht wissen, wo es differenzen gibt.
hat sowas schon mal jemand gelöst?
brauche da irgendwie einen lösungsansatz
Doppelte geht per SQL:
SELECT nummer,COUNT(nummer) FROM Tabelle GROUP BY nummer HAVING COUNT(nummer)>1
Nicht vergebene geht in SQL direkt nicht so einfach, dafür bräuchte man erst mal eine Tabelle mit allen Nummern, aber man könnte sich zumindest jeweils die erste nicht vergebene Nummer ausgeben lassen:
SELECT a.nummer+1 FROM Tabelle a LEFT JOIN Tabelle b ON b.nummer = a.nummer+1 WHERE b.nummer IS NULL
Bei 1,2,3,4,7,8,10,11 sollte das dann 5,9,12 als Ergebnis geben. Die Ganze Abfrage nochmal mit -1 statt +1 gibt das Ganze dann von der anderen Seite, also 0,6,9 in dem Fall, aus den beiden Ergebnissen könnte man sich dann die entsprechenden Bereiche der freien Nummern basteln. Letzen / Ersten Wert müsste man halt wegwerfen.