Wlan-Kabel
Lt. Junior Grade
- Registriert
- Juli 2008
- Beiträge
- 297
Moinmoin,
folgendes: ich greife auf eine Datenbank zu (ausschließlich leserechte) und will jetzt folgendes erreichen:
Einer ID der "Haupttabelle" sind mehrere Werte in einer "Untertabelle" zugeordnet. Jetzt möchte ich, wenn ich beide joine aber nicht 2,4 oder 7 mal da die Infos der Haupttabelle stehen haben, nur weil in der Untertabelle halt 2,4 bzw. 7 einträge zu der ID sind, sondern ich möchte die Werte zur ID in der Untertabelle zusammenführen.
In Worten:
(Obs so laufen würde weiß ich nicht, aber ich denke schon)
Mein Problem ist halt jetzt, dass ich halt nur Leserechte habe, also nicht mal eben nen neuen Typ erstellen kann, geht das irgendwie temporär? so á la: .. cast(collect(eigenschaft) AS (table of varchar(256))) ..
Oder hat einer womöglich noch ne gute Alternativlösung?
Gruß
Kabel
folgendes: ich greife auf eine Datenbank zu (ausschließlich leserechte) und will jetzt folgendes erreichen:
Einer ID der "Haupttabelle" sind mehrere Werte in einer "Untertabelle" zugeordnet. Jetzt möchte ich, wenn ich beide joine aber nicht 2,4 oder 7 mal da die Infos der Haupttabelle stehen haben, nur weil in der Untertabelle halt 2,4 bzw. 7 einträge zu der ID sind, sondern ich möchte die Werte zur ID in der Untertabelle zusammenführen.
In Worten:
Code:
CREATE TABLE haupttabelle (ID integer PRIMARY KEY, Name varchar2(64));
CREATE TABLE untertabelle (ID integer references haupttabelle(ID), eigenschaft);
/* Tabellen füllen */
/*Meine Idee*/
CREATE TYPE var_list IS TABLE OF varchar(256);
SELECT name, cast(collect(eigenschaft) AS varlist) Eigenschaften
FROM haupttabelle ha JOIN untertabelle un ON ha.ID = un.ID
GROUP BY ha.ID;
(Obs so laufen würde weiß ich nicht, aber ich denke schon)
Mein Problem ist halt jetzt, dass ich halt nur Leserechte habe, also nicht mal eben nen neuen Typ erstellen kann, geht das irgendwie temporär? so á la: .. cast(collect(eigenschaft) AS (table of varchar(256))) ..
Oder hat einer womöglich noch ne gute Alternativlösung?
Gruß
Kabel