SQL Mettre des ligne dans des colonne

Résolu
big-66 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
big-66 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je suis jeune étudiant en informatique et j'ai un sérieux problème. :D

Pour être le plus claire possible je vais vous schématiser mon problème :

j'ai deux tables users et profiles_users

table users contient :
id_users,nom

table profiles users contient :
id_users,profile

exemple :

table users:

|1|toto|
|2|tata|
|3|titi |

table profiles_users

|1|p1|
|1|p2|
|1|p4|
|2|p2|
|3|p3|

a la fin je voudrais avoir une table qui ressemble à :

nouvelleTable :

id_users|nom|profiles1|profiles2|profiles3|profiles4

1|toto|p1|p2|0|P4
2|tata|0|p2|0|0
3|titi|0|0|p3|0

les valeurs de profiles sont 1,2,3 ou 4.(juste ces 4 valeurs)
les deux tables on le même id_users.



A voir également:

3 réponses

jee pee Messages postés 41510 Date d'inscription   Statut Modérateur Dernière intervention   9 712
 
Salut,

J'utiliserais une jointure externe, exemple sous oracle :

insert into new_table
select u.id_users,u.nom, nvl(p1.profile,0),nvl(p2.profile,0),nvl(p3.profile,0),nvl(p4.profile,0)
from users u, profile p1, profile p2, profile p3, profile p4
where u.id_users=p1.id_users(+) and
u.id_users=p2.id_users(+) and
u.id_users=p3.id_users(+) and
u.id_users=p4.id_users(+)

cdlt
0
big-66 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour votre réponse j'ai du modifier un peut votre code car je travaille en MYsql j'ai mis ça :

insert into new_table
select u.id_users,u.nom, if(p1.profile=1,p1.profile,0),if(p2.profile=2,p2.profile,0),if(p3.profile=3,p3.profile,0),if(p4.profile=4,p4.profile,0)
from users u, profile p1, profile p2, profile p3, profile p4
where u.id_users=p1.id_users and
u.id_users=p2.id_users and
u.id_users=p3.id_users and
u.id_users=p4.id_users


mais j'ai des ligne qui sont afficher plusieurs fois avec des combinaisons différentes sur les profiles.
genre :
1|toto|p1|p2|0|P4
1|toto|0|p2|p3|0
0
big-66 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
voila c'est bon j'ai réglé mon problème :

insert into new_table
select u.id_users,u.nom, if(p1.profile=1,p1.profile,0),if(p2.profile=2,p2.profile,0),if(p3.profile=3,p3.profile,0),if(p4.profile=4,p4.profile,0)
from users u, profile p1, profile p2, profile p3, profile p4
where u.id_users=p1.id_users and
u.id_users=p2.id_users and
u.id_users=p3.id_users and
u.id_users=p4.id_users
ON DUPLICATE KEY UPDATE
profiles1 = IFNULL(profiles1,0),
profiles2 = IFNULL(profiles2,0),
profiles3 = IFNULL(profiles3,0),
profiles4 = IFNULL(profiles4,0)

Merci jee pee Pour ton aide.
0