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 :

Tous les records en 1 seul


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 77
    Points : 53
    Points
    53
    Par défaut Tous les records en 1 seul
    Bonjour!
    J'aimerais savoir si c'est possible avec SQL d'obtenir xxx records (exemple: on recherche toutes les personnes d'une table personne, donc 10 records si il y a 10 personnes) en 1 seul record (donc tous les résultats en 1 record dans différents champs).

    Imagineons que j'ai une table personne.

    Citation Envoyé par Personne
    ---ID---NOM---AGE---
    ---1----AAA----10----
    ---2----BBB----11----
    ---3----CCC----12----
    ---4----DDD----13----
    ---5----EEE----14----
    ---6----FFF----15----
    J'aimerais qu'ils soient affichés comme tels

    Citation Envoyé par Affichage
    ---AAA---10---BBB---11---CCC---12---...
    Mais SANS encodage en dur, donc il faudrait que ce soit dynamique.

    Mauvais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT 
    MAX(CASE WHEN PERSONNE.NOM like 'AAA' THEN PERSONNE.NOM END) AS AAA_NOM,
    MAX(CASE WHEN PERSONNE.NOM like 'BBB' THEN PERSONNE.NOM END) AS BBB_NOM,
    MAX(CASE WHEN PERSONNE.NOM like 'CCC' THEN PERSONNE.NOM END) AS CCC_NOM,
    ...
    FROM PERSONNE
    Dans ce cas-ci, nous devons savoir exactement quelles personnes prendre, mais j'aimerais pouvoir tout prendre même si on ajoute ou supprime une personne.

    Est-ce possible?

    Merci d'avance!

  2. #2
    Membre confirmé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Points : 502
    Points
    502
    Par défaut
    Tu utilises quel SGBD ?
    Juvamine

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 77
    Points : 53
    Points
    53
    Par défaut
    Postgresql

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Ce que tu cherches à faire est de la cosmétique et n'est pas le boulot de SQL mais celui du programme utilisateur de la BDD.

    Si tu as 10 000 personnes dans la table, tu vas sortir une seule lignes de 20 000 colonne ?

    Que est le but de cette manipulation fastidieuse ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 77
    Points : 53
    Points
    53
    Par défaut
    En fait, je fais du reporting mais avec le programme que j'utilise, il m'aurait vraiment fallu avoir les données sous cette forme (on peut casi tout faire, sauf pour ce que je veux faire sous cette forme).

    C'est sûr quand il y aura 10.000 personnes, ce n'est pas le genre de requête SQL à utiliser, mais ici, ça ne dépassera jamais les 10

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Transformer les lignes en colonnes est une opération nommée pivot ou parfois crosstab en SQL. Avec postgresql il y a un module externe tablefunc avec des fonctions pour faire ça, mais pas dynamiquement comme tu le voudrais.

    Ce type de requête pose en effet un problème conceptuel: un moteur SQL a besoin de connaitre les colonnes de résultat, leurs types, leurs noms, leur ordre relatif, avant d'exécuter la requête à proprement parler.
    Or dans le cas complètement dynamique, il faudrait pour le moteur aller au bout de l'exécution de la requête pour obtenir ces infos. Mais en même temps il en a besoin pour démarrer l'exécution, d'où une dépendance circulaire impossible à satisfaire.

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/01/2009, 14h33
  2. copier tous les argv dans un seul char*
    Par coyotemk dans le forum Débuter
    Réponses: 3
    Dernier message: 06/12/2008, 17h14
  3. Réponses: 5
    Dernier message: 23/10/2008, 17h34
  4. Réponses: 8
    Dernier message: 06/07/2008, 11h44
  5. Compiler tous les '.RDF' d'un seul coups?
    Par sofien dans le forum Reports
    Réponses: 7
    Dernier message: 17/12/2007, 11h34

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