2009-04-29 8 views
0

Pouvez-vous s'il vous plaît me faire parvenir la réponse pour mon projet oracle?Existe-t-il une méthode pour copier une nouvelle colonne dans une table existante et copier les informations de colonne d'une autre table dans Oracle?

J'ai deux tables différentes, facture et client. Dans la table des factures, j'ai déjà une colonne appelée date et dans la table client je n'ai pas la colonne date et j'ai déjà créé. Je ne sais pas comment amener les données de date de la table des factures. Quelqu'un peut-il répondre à cette question pour moi?

Répondre

1

Je pense que l'utilisation de mots-clés tels que "date" en tant que nom de colonne ou de table pose problème. Il devrait être "creation_date" ou "invoice_date" - plus descriptif et pas un mot-clé. Si cela est correct, alors la "date" dans la table client doit être "birth_date" ou "signup_date" ou quelque chose d'autre significatif pour un client, mais pas seulement une copie de "invoice_date". Le principe DRY et les règles de normalisation indiquent que vous ne devez pas répéter les données.

1

Il est pas tout à fait clair ce que vous voulez, mais en ajoutant une colonne et peuplant sur une table est assez facile:

1) Ajout d'une nouvelle colonne:

alter table customer add (some_date date); 

(comme duffymo a dit , vous ne pouvez pas avoir une colonne appelée "date" dans une table Oracle - ou du moins, vous ne devriez pas).

2) Remplir une colonne de données dans une autre table:

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

I utilisé max() parce que je suppose que le client peut avoir plus d'une facture. Bien sûr, vos besoins peuvent être différents, mais l'important est que la sous-requête ne renvoie que 1 ligne pour chaque client.

Questions connexes