SQL Mettre des ligne dans des colonne

Résolu
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. Modérateur
    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
    1. 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
      1. 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