-
Neueste Beiträge
Archive
- Juni 2019
- Januar 2019
- Juli 2018
- Juni 2018
- Januar 2017
- Dezember 2016
- August 2016
- Mai 2016
- April 2016
- März 2016
- Februar 2016
- Dezember 2015
- November 2015
- Oktober 2015
- September 2015
- August 2015
- April 2015
- Februar 2015
- Januar 2015
- August 2014
- Juli 2014
- Mai 2014
- März 2014
- Februar 2014
- Januar 2014
- Dezember 2013
- November 2013
- Oktober 2013
Kategorien
Meta
Schlagwort-Archive: rang
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
/* Nummeriere die Datensätze ************************* Gegeben sei eine Tabelle aysx mit einem Primary Key. Die Werte für den PK müssen nicht fortlaufend sein. Aufgabe: Nummeriere die Datensätze vom kleinsten bis zum größsten PK-Wert. Das folgende MySQL-Script zeigt exemplarisch, wie das machbar ist. Bedenke, dass die Bestimmung des Rangs (gidf) nicht auf eine "echte" Tabelle beschränkt ist, sondern auch mit einem View und dem Ergebnis einer Abfrage durchgeführt werden kann. Beispieltext: aysx Matthias Kopp 2013 */ create table aysx ( id int PRIMARY KEY, remark varchar ( 64 )); /* Tabelle mit Beispieldaten füllen. */ insert into aysx ( id, remark ) values ( 1, 'Eins' ); insert into aysx ( id, remark ) values ( 512, 'FiveOneTwo' ); insert into aysx ( id, remark ) values ( 21, 'Antv' ); insert into aysx ( id, remark ) values ( 42, 'Antwort' ); insert into aysx ( id, remark ) values ( 23, 'whatever' ); /* Wesentlich ist der self-join. Der PK-Constraint garantiert, dass jede aysx.id nur einmal vorkommt. Eine id ist immer gleich ihrer selbst und alle anderen sind entweder größer oder kleiner. Die where-Bedingung sucht diejenigen Datensätze zusammen, die kleiner-gleich einer id sind - und das für alle ids. Schließlich wird für jede id eine Gruppe gebildet und die Anzahl der Elemente in der Gruppe ist eben der Rang. */ select count(*) as rang, t2.id from aysx t1, aysx t2 where t1.id <= t2.id group by t2.id; /* Ohne Gruppierung und Zählen - die "expandierte" Form. Hier kann man nachvollziehen, welche Elemente vorhanden sind. Zähle und gruppiere selbst! */ select t1.id, t2.id from aysx t1, aysx t2 where t1.id <= t2.id order by t2.id /* Auräumen. */ drop table aysx; |
Natürlich ist das obige Beispiel so in der Praxis nicht vorgekommen. Das Beispiel zeigt eine nützliche Struktur. Im Laufe der Zeit kam immer wieder die Anforderung der Durchnummerierung. Man braucht dazu keinen PK-Constraint, aber wenigstens irgendein Tupel, das unique … Weiterlesen
6. Oktober 2013
Kommentare deaktiviert für Rang in sql