dedlfix: MySQL 5.1 -automatisch nummerieren pro Typ

Beitrag lesen

Tach!

Bitte wie üblich zitieren und nicht einfach alles. Danke.

typ ist beliebig erweiterbar.

Dann ist eine Fallunterscheidung nicht anwendbar.

Wie müsste das mit der Stored Function aussehen? Würde das auch mit einer Stored Procedure gehen, der ich z.B. den Typ übergebe und die mir dann die für mich relevanten Spalten zurückgibt?

Es kommt darauf an, was am Ende rauskommen soll. Das Wesentliche der Lösung ist der Zwischenspeicher zum Hochzählen pro Typ. Die Frage dazu ist, wann der zurückgesetzt werden soll. Für solch einen Zwischenspeicher bietet sich eine temporäre Tabelle an. Die hat die Eigenschaft, ohne weiteres Zutun am Verbindungsende gelöscht zu werden. Wenn pro Verbindung nur eine Abfrage stattfindet, dann kannst du eine Stored Function nehmen, die den Typ übergeben bekommt und den zugehörige Zählerstand liefert. Die Temp-Tabelle muss die Funktionsaufrufe überleben und das ist auch das Problem, wenn mehrere Abfragen pro Verbindung diese Funktion verwenden. Ansonsten musst du das Ganze in einer Stored Procedure kapseln, also Temp-Table erzeugen, mit einem Cursor durch die Datenmenge laufen, dabei die typabhängige Zählung vornehmen, Ergebnismenge sammeln (da weiß ich grad nicht, ob man eine weitere Temptable braucht oder die Datensätze einfach so ausgeben kann), am Ende jedenfalls Zähler-Temptable löschen.

Ich möchte in einen anderen Select darauf entweder per Subselect oder Join zugreifen und dann nur die Datendätze abrufen, wo der Counter z.B. den Wert 2 hat.

Das ist dabei das kleinste Problem, wenn die SP steht. Wenn du allerdings die Zahlen insgesamt nicht benötigst, sondern du nur die Anzahl pro Typ brauchst, dann ist das mit einer einfachen Gruppierung erreichbar.

dedlfix.