SQL Mettre des ligne dans des colonne

Résolu
big-66 Messages postés 7 Statut Membre -  
big-66 Messages postés 7 Statut Membre -
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.

3 réponses

  1. jee pee Messages postés 9437 Date d'inscription   Statut Modérateur Dernière intervention   9 973
     
    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
  2. big-66 Messages postés 7 Statut Membre
     
    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
  3. big-66 Messages postés 7 Statut Membre
     
    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