Oracle insert

Hey,
ich benutze Oracle 10g und stehe vor einem Problem. Ich habe eine Tabelle, in der vereinfacht Folgendes steht:

table
name|land|wert

hans|DE|1
peter|DEBECH|2
chris|CYFR|2
holger|US|1

ich möchte nun in table Zeilen einfügen, und zwar sollen die Länder auseinander genommen werden ein neue Zeilen bilden, so dass die Tabelle am Ende so aussieht:

hans|DE|1
peter|DE|2
peter|BE|2
peter|CH|2
chris|CY|2
chris|FR|2
holger|US|1

Und irgendwie komm ich so gar nicht voran. Geht das in Oracle überhaupt? Irgendwie doch bestimmt oder?
Hat jemand nen Tipp für mich? Ich wäre echt dankbar…

Viele Grüße
Nadine

Achso, vergessen.
In der Abfrage müsste dann quasi ein if (wert = 2) -> bla sein…

Viele Grüße
Nadine

Hallo,
also mit einer Abfrage lässt sich das meines erachtens nicht bewerkstelligen.

Entweder schreibst du dir eine Stored Procedure und operierst mit zwei geschachtelten Schleifen (1 über alle Datensätze, 1 über die Länge des zweiten Feldes / 2 wenn es länger ist als 2, sofern jedes Land ein 2 Zeichen Kürzel hat) oder du führst für jedes vorkommende Land jeweils ein Query aus.

MfG Dominik

Hallo Nadine,

das geht schon, aber es sich schon eine Randbedingungen zu berücksichtigen:

  • Ländercode ist immer zweistellig

  • die maximale Anzahl ist bekannt

Danach geht es mit folgenden Statement weiter (aus den Bauch raus):

 select name,
 substr(land,1,2) as land
 wert
 from tab1
 where length(substr(land,1,2))=2
 union
 select name,
 substr(land,3,2) as land
 wert
 from tab1
 where length(substr(land,3,2))=2
 union
 select name,
 substr(land,5,2) as land
 wert
 from tab1
 where length(substr(land,5,2))=2

Das geht natürlich nicht ohne weiteres Nachdenken in der gleichen Tabelle, aber deutlich ohne den angedeuteten Kanonen.

MfG Georg V.

Hallo,

stimmt ans UNION hab ich nicht gedacht.

MfG Dominik

Hey,
danke für eure Antworten.
Ich hab jetzt nochmal drüber nachgedacht (auch mit euren Tipps) und bin zu dem Entschluss gekommen, dass ich die Daten doch vor dem Einfügen in die Datenbank entsprechend bearbeite, weil mir das alles *räusper* sehr umständlich erschien :wink:

Nun läufts und alles passt.

Danke trotzdem für eure Tipps, ich werd sie auf jeden Fall im Hinterkopf behalten, falls ich nochmal auf ein ähnliches Problem stoße.

lg Nadine