2009-04-29 4 views
0

Können Sie mir bitte die Antwort für mein Orakelprojekt übermitteln?Gibt es eine Methode zum Kopieren einer neuen Spalte in eine vorhandene Tabelle und zum Kopieren der Spalteninformationen aus einer anderen Tabelle in Oracle?

Ich habe zwei verschiedene Tabellen, Rechnung und Kunde. In der Rechnungstabelle habe ich bereits eine Spalte mit dem Namen date und in der customer-Tabelle habe ich die Datumsspalte nicht und ich habe sie bereits angelegt. Ich weiß nicht, wie man die Datumsdaten aus der Rechnungstabelle holt. Kann mir jemand diese Frage beantworten?

Antwort

1

Ich denke, die Verwendung von Schlüsselwörtern wie "Datum" als Spalten- oder Tabellennamen erfordert Ärger. Es sollte "creation_date" oder "rechnungsdatum" sein - eher beschreibend und kein Schlüsselwort.

Wenn das stimmt, dann sollte das "Datum" in der Kundentabelle ein "Geburtsdatum" oder "Signup_Datum" oder etwas anderes für einen Kunden sein, aber NICHT nur eine Kopie von "Rechnungsdatum". Das DRY-Prinzip und die Normalisierungsregeln sagen, dass Sie keine Daten wiederholen sollten.

1

Es ist nicht ganz klar, was Sie wollen, aber das Hinzufügen und eine Spalte auf einem Tisch bevölkern ist einfach genug:

1) eine neue Spalte hinzu:

alter table customer add (some_date date); 

(wie duffymo gesagt hat , Sie können in einer Oracle-Tabelle keine Spalte namens "Datum" haben - oder zumindest sollten Sie nicht.

2) eine Spalte von Daten in einer anderen Tabelle Bestücken:

update customer c 
set some_date = (select max(other_date) from invoices i 
       where i.customer_id = c.customer_id 
       ); 

habe ich max(), weil ich ein Kunde davon ausgehen, mehr als eine Rechnung hat. Natürlich können Ihre Bedürfnisse anders sein, aber das Wichtigste ist, dass die Unterabfrage nur eine Zeile für jeden Kunden zurückgeben muss.

Verwandte Themen