Patrick.Karre Geschrieben 27. März 2008 Geschrieben 27. März 2008 Hallo Forum, ich habe folgendes Problem: Ich habe Kundendaten in denen steht in einem Feld eine Anzahl wie oft etwas verschickt werden soll. Solange die Zahl 1 da steht soll die Adresse nur einmal angezeigt werden. Wenn aber die Zahl 2 da steht soll die Adresse zweimal untereinander angezeigt werden. Ich habe keine Idee, wie ich das mit einem SELECT-Statement hinbekommen könnte, hat jemand von euch eine Idee? Beste Grüße aus Gießen Patrick Zitieren
Jan Jansen Geschrieben 27. März 2008 Geschrieben 27. März 2008 2 Vorschläge: 1. Benutz ein rekursives SQL 2. Wenn du den Wertebereich von Anzahl sehr sicher einschränken kannst: SELECT * FROM a WHERE anzahl>0 UNION SELECT * FROM a WHERE anzahl>1 UNION SELECT * FROM a WHERE anzahl>2 usw. wobei die 1. Lösung solider ist, auch wenn es etwas Einarbeitung kostet Zitieren
Patrick.Karre Geschrieben 27. März 2008 Autor Geschrieben 27. März 2008 Wie genau geht die 1. Lösung? Zitieren
Jan Jansen Geschrieben 27. März 2008 Geschrieben 27. März 2008 Google mal nach "rekursion sql vater kind", der 2. Link Zitieren
Jan Jansen Geschrieben 28. März 2008 Geschrieben 28. März 2008 Hier ist ein SQL das ungefähr das macht was du suchst. Ersetze Stufe durch Anzahl und bau deine benötigten Felder ein. In Daten werden einfach nur 3 Testsätze erzeugt (gibt es in db2 eine spezielle Tabelle für so was?) WITH daten(id, werte, stufe) AS (SELECT DISTINCT 1, 111, 4 FROM sysibm.views UNION SELECT DISTINCT 2, 222, 1 FROM sysibm.views UNION SELECT DISTINCT 3, 333, 2 FROM sysibm.views) , rek (id, werte, stufe) AS ( SELECT daten.id , daten.werte , daten.stufe FROM daten UNION ALL SELECT kind.id , kind.werte , vater.stufe-1 FROM rek vater , daten kind WHERE vater.id=kind.id AND vater.stufe>1 ) SELECT id, werte FROM rek Zitieren
Patrick.Karre Geschrieben 28. März 2008 Autor Geschrieben 28. März 2008 Hallo, danke für Deine Hilfe. Ich habe es mit UNION ALL gelöst. Klappt Super. Beste Grüße aus Gießen Patrick Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.