Fehlende fortlaufende Nummer
mimicry
- datenbank
0 globe0 Biesterfeld0 Vinzenz Mai
Hi zusammen,
hat jemand eine Idee dazu:
Habe in einer Datentabelle Aufträge stehen, die eine Spalte "Rechnungsnummer" hat. Diese unterscheidet sich von der ID (Auftragsnummer), ist aber fortlaufend, je nach Datum der Bezahlung. (Bzw. manche Datensätze haben eben keine, wenn diese Aufträge storniert wurden)
Die Frage:
Kann ich mit SQL Lücken in dieser fortlaufenden Liste finden. Also rausfinden, ob eine oder mehrere Zahlen im Fortlaufenden fehlen?
Danke für die Hilfe
M.
n'abend,
Habe in einer Datentabelle Aufträge stehen, die eine Spalte "Rechnungsnummer" hat. Diese unterscheidet sich von der ID (Auftragsnummer), ist aber fortlaufend, je nach Datum der Bezahlung. (Bzw. manche Datensätze haben eben keine, wenn diese Aufträge storniert wurden)
Wenn du die Datensätze (mehr die Auftragsnummern) haben möchtest, zu denen es keine Rechnungsnummer gibt, brauchst du doch nur danach zu fragen.
Angenommen deine Tabelle hat Auftragsnummer als Primärschlüssel und besitzt eine Spalte Rechnungsnummer, welche per default den Wert NULL hat. Deine Abfrage könnte dann wie folgt aussehen:
SELECT auftragsnummer
FROM auftraege
WHERE rechnungsnummer = NULL;
sollte dein Datenmodell so aussehen, dass du eine Tabelle auftraege hast, die lediglich die Daten zum Auftrag umfasst und eine zweite Tabelle rechnungen, welche neben rechnungsnummer und auftragsnummer die Rechnungsdaten enthält, könntest du dein Problem mit einem LEFT JOIN lösen.
SELECT a.auftragsnummer
FROM auftraege a
LEFT JOIN rechnungen r
ON (r.auftragsnummer = a.auftragsnummer)
WHERE r.rechnungsnummer = NULL;
Kann ich mit SQL Lücken in dieser fortlaufenden Liste finden. Also rausfinden, ob eine oder mehrere Zahlen im Fortlaufenden fehlen?
nicht, dass ich wüsste. Das hängt aber wohl sehr stark von der verwendeten Datenbank ab.
weiterhin schönen abend...
Hej,
Kann ich mit SQL Lücken in dieser fortlaufenden Liste finden. Also rausfinden, ob eine oder mehrere Zahlen im Fortlaufenden fehlen?
Nicht ohne weiteres.
Da gabs übrigens vor nicht allzulanger Zeit zwei Threads zu:
</archiv/2006/9/t136219/#m884657>
</archiv/2006/9/t137451/#m892778>
Beste Grüße
Biesterfeld
Hallo mimicry,
Kann ich mit SQL Lücken in dieser fortlaufenden Liste finden.
Ja, das geht. Es ist nur keine gute Idee, die Lücken füllen zu wollen :-)
Also rausfinden, ob eine oder mehrere Zahlen im Fortlaufenden fehlen?
Wie Du genau vorgehen kannst, hängt von Deinem Datenbankmanagementsystem (DBMS) ab. Eine mögliche Vorgehensweise:
Erzeuge eine temporäre Tabelle mit allen Werten von 1 bis zur maximalen Rechnungsnummer. Ein LEFT JOIN von dieser temporären Tabelle auf Deine Datentabelle über die Rechnungsnummern mit der Einschränkung (IS NULL)
liefert Dir genau die "Lücken".
Die Realisierung hängt von den Möglichkeiten Deines DBMS ab, ich persönlich sähe dies als Funktion, was bei MySQL mindestens die Version 5.0.x voraussetzt ...
Freundliche Grüße
Vinzenz