Zurück   Entwickler-Forum > Datenbanken > Oracle

Antwort
 
Themen-Optionen Ansicht

Daten nach Attribut
Alt 08.07.2010, 11:38   #1
Eckbert88
Neuer Benutzer
 
Eckbert88 ist offline
Registriert seit: 08.07.2010
Beiträge: 9
Eckbert88 befindet sich auf einem aufstrebenden Ast
Standard Daten nach Attribut

Hallo

ich habe eine Frage!!!

Also ich habe tabelle a

mit idA und nameA

tabelle B

mit idB und a_ID

ich moechte jetzt das die daten aus nameA, als Spaltenname in B erscheint!!!

also z.B.

Datensatz in nameA = a b c d e f g h i j k ....


nun moechte tabelle b wie folgt haben.

idb und a_a; a_b; a_c; etc.

also ich moechte das ich die daten aus nameA als spalte in B bekomme.


Danke schon mal


Gruesse

Eckbert
  Mit Zitat antworten

Anzeige

Alt 08.07.2010, 11:51   #2
kuemmelchen
Stammgast
 
kuemmelchen ist offline
Registriert seit: 26.02.2003
Beiträge: 150
kuemmelchen befindet sich auf einem aufstrebenden Ast
Standard

Folgende Vorgehensweise per PL/SQL:

1. Spaltenname ermitteln
2. String mit den gelesenen Spalten zusammenbasteln (Datentyp nicht vergessen)
Beispiel: String 'CREATE TABLE b (a_a datentyp, ...)'
3. Tabellenerstellung ausführen
EXECUTE IMMEDIATE String;

kuemmelchen
  Mit Zitat antworten

Alt 08.07.2010, 20:19   #3
Eckbert88
Neuer Benutzer
 
Eckbert88 ist offline
Registriert seit: 08.07.2010
Beiträge: 9
Eckbert88 befindet sich auf einem aufstrebenden Ast
Standard

wenn dich richtig verstehe dann muss ich da aber jede spalte sozusagen einzeln erzeugen.

aber des sind teilweise sehr lange datensaetze... etwas muehselig des alles zu schreiben! Aber danke trotzdem.

hat sonst noch jmd evtl. ne idee ?

danke
  Mit Zitat antworten

SQL: Daten=>Tab_A als Spaltename nach Tab_B
Alt 13.07.2010, 22:21   #4
Eckbert88
Neuer Benutzer
 
Eckbert88 ist offline
Registriert seit: 08.07.2010
Beiträge: 9
Eckbert88 befindet sich auf einem aufstrebenden Ast
Standard SQL: Daten=>Tab_A als Spaltename nach Tab_B

hier nochmal eine etwas verstaendlichere Formulierung. DANKE.

ich habe folgendes Problem. Datenbank ist Oracle.

Tabelle A

A_ID - Konzept
-----------------------
1 101
2 102
3 103
4 104
5 105

Nun moechte ich Tabelle B so haben das die Daten aus Konzept (101,102,...) in B als Spalten "B_Konzept" ausgegeben werden.

Tabelle B

B_ID B_101 B_102 B_103 B_104 B_105
--------------------------------------
1
2
3
4
5

Ich bin mir nicht ganz sicher wie ich das in SQL ausdruecken kann. Evtl. etwas mit ALTER TABLE (B ist schon vorhanden und soll kontinuierlich erweitert werden).


In diesem Zusammenhang eine weitere Frage die jedoch zweitrangig ist bis sich Frage 1 geloest hat.

Da Tabelle B kontinuierlich erweitert wird waere eine Automatisierung in Form eines Batches ganz gut... also wenn mir dazu jmd Tipps hat. Danke!


Sollte irgendwas unverstaendlich bleiben bitte einfach Fragen.

Gruesse

Eckbert
  Mit Zitat antworten

Alt 15.07.2010, 10:37   #5
kuemmelchen
Stammgast
 
kuemmelchen ist offline
Registriert seit: 26.02.2003
Beiträge: 150
kuemmelchen befindet sich auf einem aufstrebenden Ast
Standard

Folgendes Beispiel wird Dir sicherlich weiterhelfen:

Code:
DROP TABLE a;

CREATE TABLE a
(a_id number,
konzept number
);

INSERT INTO a VALUES (1, 101);
INSERT INTO a VALUES (2, 102);
INSERT INTO a VALUES (3, 103);
INSERT INTO a VALUES (4, 104);
INSERT INTO a VALUES (5, 105);


DROP TABLE b;

CREATE TABLE b
(b_id number
);


BEGIN
   FOR zeiger IN (SELECT konzept FROM a) LOOP
         EXECUTE IMMEDIATE 'ALTER TABLE b ADD ( b_' || zeiger.konzept || ' number )';
   END LOOP;
END;
/

desc b
Das Beispiel liefert als Ergebnis:

Name Null? Typ
----------------------------------------- -------- -------
B_ID NUMBER
B_101 NUMBER
B_102 NUMBER
B_103 NUMBER
B_104 NUMBER
B_105 NUMBER

kuemmelchen
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu



Alle Zeitangaben in WEZ +2. Es ist jetzt 19:33 Uhr.



© 1995–2009 Software & Support Verlag GmbH. Vervielfältigung nur mit Genehmigung des Verlags.