Aide : requete SQL

Joker_ Messages postés 190 Statut Membre -  
newkiss Messages postés 145 Statut Membre -
Bonjour,

Je travaille avec une base de donnée SQL server, J'ai la table suivante
ID | Nom
-----------
10| Alex
20| Robert
30| Sonia
10|'Michel
30| Mike
20| Nicolas

En fait chaque ID est associé à deux Noms!
Je veut que vous m'aider à exécuter une requête SQL permettant d'afficher cette résultat:
ID | Nom1..|Nom2
------------------------
10| Alex....|Michel
20| Robert|Nicolas
30| Sonia |Mike

Merci d'avance

3 réponses

  1. mathew76 Messages postés 170 Statut Membre 64
     
    Bonjour

    avoir deux colonnes de noms me parait difficile en revanche tu peux faire ca :

    select * from tatable order by Id;


    ca va te donner :

    10| Alex
    10| Michel
    20| Robert
    20| Nicolas
    30| Sonia
    30| Mike

    Bonne journée

    Ps : je regarde si c'est possible de faire sur deux colonnes et je te tiens informer.
    0
  2. newkiss Messages postés 145 Statut Membre 13
     
    avec MYSQL tu aurais pu faire

    SELECT  
       id, 
       GROUP_CONCAT(nom) 
    FROM maTable 
    GROUP BY id


    Sous SQL serveur tu pourrais écrire une procédure stockée ou fonction en T-SQL
    0
  3. Joker_ Messages postés 190 Statut Membre 1
     
    Merci de me répondre,

    newkiss, veillez me plus informer a propos du procédure 'GROUP_CONCAT(nom)'
    0
    1. newkiss Messages postés 145 Statut Membre 13
       
      Voici une explication du GROUP_CONCAT en MySQL
      http://blog.maiis.ch/2008/09/30/mysql-fonction-group_concat/

      En SQL Server, il faudrait créer une fonction "GROUP_CONCAT"

      qui prendrai en paramètre ton id et la colonne que tu souhaite concaténer et qui retournerai une chaines avec tous les valeurs de cette colonne

      du coup tu pourrais effectuer cette requête
      SELECT  
         id, 
         GROUP_CONCAT(id,"nom")  as noms
      FROM maTable 
      GROUP BY id
      


      pour avoir ce résultat par exemple


      ID | Noms
      -----------
      10| Alex - Michel
      20| Robert - Nicolas
      30| Sonia - Mike


      Je vais essayer de t'écrire la fonction demain si tu n'y arrive pas.
      0