Insérer colonne SQL & SAS

[Fermé]
Signaler
-
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
-
Bonjour,

J'ai un petit soucis concernant deux tables importées sur SAS. La première table contient des informations clients (nom, prénom, adresse etc) et la seconde contient l'ensemble des transactions de tous les clients.
Biensur, la table des transactions contient beaucoup plus de lignes que la table client.

Voici donc ma question : j'aimerais dans la table des transactions ajouter une colonne "nom" et "prénom" pour avoir le nom de la personne à côté de son id client.

Voici donc ce que j'ai lancé sur sas mais cela ne marche pas (je suis débutant en sql, la syntaxe risque donc d'être catastrophique) :

proc sql;
insert into bibli.transactions ("nom")
values (bibli.infoclients ) where transactions.id = infoclients.id ;

Je voudrais donc faire un truc comme ça, pourriez-vous m'aider?

Merci



14 réponses

personne pour m'aider svp???
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
Si tu as déjà ton information dans ta table client pourquoi vouloir la dupliquer ?
Tu risques de t'amuser à devoir changer t'assurer que 4 champs sont valides au lieu de 2.
Pour retrouver le nom et le prenom du client associé à une transaction il te suffit de faire une jointure entre les 2 tables. Si c'est pour faire une seule supertable avec toute les infos, autant travailler sur excel.
Exemple:
Select transactions.num_transaction, infoclient.nom, infoclient.prenom
From transactions, infoclient
where transactions.id = infoclients.id ;
ça je le savais mais le problème c'est que je ne PEUX pas travailler sur excel : la base de données contient.... 12 000 000 de lignes !!!! Je ne peux absolument pas la lire sur excel ! et je ne veux pas m'amuser pour chacun des 40 000 clients à retourner sur le fichier excel pour voir un par un, c'est pour cela que je voulais directement afficher... mais bon apparemment c'est pas possible, merci quand même
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
C'était ironique excel -_-"
Le but n'était pas de te faire découvrir la toute puissance d'excel pour la gestion de grande basse de donnée unitable (c'est encore de l'ironie au passage ;) )
C'était juste pour te faire comprendre que vouloir répliquer des champs d'une table dans une autre (hors clé étrangères) ne servais à rien car tu peut sans effort accéder à ces informations grâce à des requêtes sql bien construites.
Imaginons deux tables :
Transac (id_t, prix, #id_c)
Client (id_c, nom, prenom)
Tu n'as aucunement besoin de répliquer le nom et le prenom dans la table transaction pour lier une transaction au nom d'un client.
Select id_t,nom,prenom
From Transac,Client
where Transac.id_c = Client.id_c;
mais je sais tout ça!!! Mais le problème c'est que, sur sas, si je fais une telle requête j'aurais "fenêtre pleine" et je ne pourrais pas voir les résultats.

Je vais donner un exemple des deux tables:

table 1 :

id client transaction montant type de transaction etc...
1
1
1
1
1

table 1 :

id client prenom nom age
1 Peter Falk
2 Zinedine Zidane

Moi j'aimerais avoir dans la table une une colonne remettant à chaque fois le nom et prénom, cad :

table 1 :

id client nom prenom transaction etc...

Parce que, si je vais dans l'autre table pour 40000 clients, je vais j'amais m'en sortir ! et au moins, dans ce cas là, si je fais une reqûete sql sur une même base, ca va le faire !

voilà ce que j'ai fait mais cela n'a pas fonctionné :

update table_transaction set table_transactions.nom = table _clients.nom
where table_transactions.id = table_clients.id

Le gros soucis c'est que sas ne le prend pas, pour une simple et bonne raison : il faut préciser la bibliothèque avant de préciser la table. Si ma bibliothèque s'appelle "biblio" cela donnera par exemple : where biblio.table_transactions.id !
Là, il y a deux points et sas ne veut pas l'accepter!! Vous Pouvez m'aider?
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
Mouais je reste sceptique. Enfin bon je connais pas SAS, je t'accorde le benefice de doute :)
Si tu es sur de vouloir faire ça, essaye plutôt :
update table_transaction
set table_transactions.nom = (select table _clients.nom from table_clients where table_transactions.id = table_clients.id)
Merci bien mais ça ne fonctionne pas...
Le problème c'est que, sur sas, on ne peut pas mentionner que la table. Il faut préciser la bibliothèque à chaque fois. Pour la table clients je suis obligé de tapper: biblio.tables_clients.nom
Il y a donc deux "." et sas est déboussolé, et je ne sais pas comment faire
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
Et comme ca ? :
update biblio.table_transaction t
set table_transactions.nom = (select c.nom from biblio.table_clients c where t.id = c.id)
non plus la table "n'est pas référencée"... sans la mention de la bibliothèque, il reconnait pas la table, et avec il reconnait plus quel point correspond à quoi...
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
Euh pardon, j'ai oublié un table_tabletransaction qui trainait :
update biblio.table_transaction t
set t.nom = (select c.nom from biblio.table_clients c where t.id = c.id)
la ca marche mais le problème c'est qu'il me met "mr" même quand il s'agit d'une dame, c'est très bizarre, quelque chose doit clocher
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
Le mr est stocké où ? Dans le champ nom ?
Est-ce que c'est déjà correct dans la table clients ?
Ben pour les noms ca ne marchait pas, ni pour les prénoms d'ailleurs, donc j'ai essayé avec la civilité. Sauf que là, ca marche mais à moitié...
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
-_-"
Bon je suis à court d'idées là, désolé.