IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Afficher sur une ligne les réponses d'une requête (s'il y a lieu).


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Points : 37
    Points
    37
    Par défaut Afficher sur une ligne les réponses d'une requête (s'il y a lieu).
    Bonjour,

    Pour un petit projet personnel j'ai créé une base (SQL Server 2005) permettant d'inventorier des PC avec leurs matériels, et mon problème se trouve sur l'affichage des données entre trois tables.
    PC_computer, RAM_memoire et PC_RAM organisée comme suit :

    PC_computer(PC_ID, PC_NOM)
    PC_RAM(#PC_ID, #RAM_ID)
    RAM_memoire(RAM_ID, RAM_TAI)

    L'idée est que dans le PC j'ai des barrettes de RAM (entre 1 et n) et qu'il me suffit de connaître l'ID du PC pour obtenir la liste des barretes de RAM, avec leur taille respective, qu'il contient.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        PC_computer           PC_RAM            RAM_memoire
    ------------------  ------------------  --------------------
    | PC_ID | PC_NOM |  | PC_ID | RAM_ID |  | RAM_ID | RAM_TAI |
    ------------------  ------------------  --------------------
    | 1     | toto   |  | 1     | 1      |  | 1      | 512     |
    | 2     | tata   |  | 1     | 2      |  | 2      | 1024    |
    | 3     | tutu   |  | 2     | 1      |  --------------------
    ------------------  | 3     | 1      |
                        | 3     | 1      |
                        ------------------
    Il suffit donc pour connaître les barretes que contient le PC toto de jouer la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT PC_NOM, RAM_TAI
    FROM PC_computer P
    INNER JOIN PC_RAM PR ON P.PC_ID = PR.PC_ID
    INNER JOIN RAM_memoire R ON PR.RAM_ID = R.RAM_ID
    WHERE P.PC_NOM = 'toto'
    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    -------------------------
    |    | PC_NOM | RAM_TAI |
    -------------------------
    | #1 | toto   | 512     |
    | #2 | toto   | 1024    |
    -------------------------
    Mais j'aimerai réussir à afficher le tout sur une ligne.
    Du genre le nom du pc suivit de la taille de chaque barrette qu'il contient dans des colonnes différentes :
    toto 512 1024
    ou
    tata 1024 NULL

    Y a-t-il un moyen d'écrire la requête pour obtenir ce genre d'affichage ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 404
    Points
    28 404
    Par défaut
    L'utilisation de PIVOT n'est pas possible dans les SGBD qui respectent la norme SQL

  4. #4
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    OOOOOH !!!

    Merci je ne connaissais pas cette notion de pivot, c'est parfait.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copier les cellules d'une ligne sélectionnée sur une autre feuille
    Par Liloo14 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 17/07/2013, 20h19
  2. Réponses: 9
    Dernier message: 05/11/2012, 15h28
  3. Réponses: 1
    Dernier message: 03/01/2011, 14h01
  4. Réponses: 3
    Dernier message: 28/10/2010, 10h58
  5. Afficher sur plusieur ligne du texte dans une balise <td>
    Par G_Kill dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 02/12/2006, 08h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo