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

Requêtes MySQL Discussion :

Requête sur deux tables et réponses en colonnes


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Requête sur deux tables et réponses en colonnes
    Bonjour
    sous mysql 4.1.20
    Une table A pour l'inscription des users
    Une table B pour les questions et les réponses de chaque user

    je fais une jointure entre les deux tables, et je voudrais récupérer les réponses aux questions sous cette forme :

    user1 | question/réponse1 | question/réponse2 | question/réponse3 ...
    user2 | question/réponse1 | question/réponse2 | question/réponse3 ...
    user3 | question/réponse1 | question/réponse2 | question/réponse3 ...
    ...

    Voici la requête que j'ai employé pour la première question réponse :

    SELECT CONCAT( tableA.name, ' ', tableA.user_planete ) AS participants, CONCAT( tableB.ele_caption, ' ', tableB.ele_value ) AS Réponses
    FROM tableA LEFT JOIN tableB
    ON tableA.uid = tableB.uid AND tableB.ele_caption = 1
    qui fonctionne comme je veux, mais c'est après que je sèche, quand je veux afficher les autres questions/réponses

    j'ai essayé :

    SELECT CONCAT( tableA.name, ' ', tableA.user_planete ) AS participants, CONCAT( tableB.ele_caption, ' ', tableB.ele_value ) AS Réponses
    FROM tableA LEFT JOIN tableB
    ON tableA.uid = tableB.uid AND tableB.ele_caption = 1
    UNION
    SELECT CONCAT( tableA.name, ' ', tableA.user_planete ) AS participants, CONCAT( tableB.ele_caption, ' ', tableB.ele_value ) AS Réponses
    FROM tableA LEFT JOIN tableB
    ON tableA.uid = tableB.uid AND tableB.ele_caption = 2
    ...
    Mais cela m'affiche les réponses à la suite sur une seule colonne

    j'ai atteins ( très vite ) mon niveau d'incompétence
    une petite lumière dans la nuit ?

  2. #2
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Je ne sais pas si c'est rassurant mais la réponse est en gros 'pas possible'. En tout cas pas facilement. Il y a déjà eu d'autres thread sur sensiblement le même problème.

    En gros:
    - Si concaténer les questions/réponses est acceptable jouer avec GROUP BY et GROUP_CONCAT peut faire l'affaire.
    - Sinon il faut un JOIN par colonne (donc empiler les JOIN, pas les UNION -> très bof). Si en plus ce sont des LEFT JOIN le serveur sera très vite à genous (ça peut être dès 3 ou 4 colonnes avec de grosses tables).
    - Tout lister (avec "tableA [LEFT] JOIN tableB ON tableA.uid = tableB.uid") et faire le passage en colonnes dans le code client, ce qui est la solution usuelle car ce n'est pas trop le travail de la base de données qui de toute façon ne peut pas le faire facilement. Avec un "ORDER BY tableA.uid, tableB.ele_caption" il sera facile de parcourir le résultat et d'avoir pour chaque utilisateur ses questions.

    J'en oublie peut-être mais bon.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour, et merci Sivrît pour ta réponse
    Bon je pense que je vais faire à la main des copier-coller des questions /réponses dans le tableur
    ce n'est pas satisfaisant pour l'esprit, ...mais c'est le résultat qui compte

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

Discussions similaires

  1. [MySQL] Requête sur deux tables.
    Par lewebdalex dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 23/02/2008, 17h23
  2. Aide pour une requête sur deux tables
    Par Andry dans le forum Développement
    Réponses: 2
    Dernier message: 05/11/2007, 07h14
  3. [Access] Fonction TOP dans une requête sur deux tables
    Par pc75 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/07/2007, 09h31
  4. Requête sur deux tables en même temps
    Par will89 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/04/2006, 11h01
  5. Problème de requêtes sur deux tables
    Par Pymm dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2005, 09h06

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