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 :

Utiliser WHERE IN sur le résultat d'une requête pivot


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Points : 4
    Points
    4
    Par défaut Utiliser WHERE IN sur le résultat d'une requête pivot
    Bonjour,

    Je bloque sur une vilaine requête, voici mon cas :

    Voici l'erreur : #1054 - Unknown column 'Email' in 'IN/ALL/ANY subquery'

    Et la requête :

    SELECT
    GROUP_CONCAT( if( elementID =197, valeur, NULL ) ) AS 'Prénom',
    GROUP_CONCAT( if( elementID =198, valeur, NULL ) ) AS 'Email'
    FROM formulaires_entree_elements2
    WHERE idParent
    IN (
    SELECT id
    FROM formulaires_entrees2
    WHERE idFormulaire = 4
    )
    AND Email
    IN (
    SELECT email
    FROM client
    WHERE id_ent = 540
    )

    GROUP BY idParent

    Je me doute que ça ne fonctionne pas parce que Email n'existe pas dans la table formulaires_entree_elements2. Du coup ma question est : Comment puis-je filtrer le résultat de cette requête autrement utilisant mon IN à cet endroit?

    D'avance merci

  2. #2
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Est-ce que vous pensez que cela peut fonctionner? (Je ne sais pas tester pour le moment)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SELECT * FROM (
    SELECT 
       GROUP_CONCAT( if( elementID =197, valeur, NULL ) ) AS 'Prenom',
       GROUP_CONCAT( if( elementID =198, valeur, NULL ) ) AS 'Email'
    FROM formulaires_entree_elements2
    WHERE idParent
    IN (
       SELECT id
       FROM formulaires_entrees2
       WHERE idFormulaire = 4
    )
    GROUP BY idParent) AS tempTable WHERE Email 
    IN (
       SELECT email
       FROM client
       WHERE id_ent = 540
    )

  3. #3
    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
    Tu as simplement besoin d'apprendre les jointures !

    De plus, évite de relancer la guerre des étoiles !

    Ta requête semble traiter les données d'un formulaire ?
    Pourquoi GROUP_CONCAT ? Pour récupérer une liste de prénoms et d'adrels ?

    Bref, qu'est censée faire ta requête ?
    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 !

  4. #4
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    C'est mieux comme ça, je pense

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT t1.prenom, t1.email
    FROM
    (  SELECT 
       GROUP_CONCAT( if( elementID =197, valeur, NULL ) ) AS 'prenom',
       GROUP_CONCAT( if( elementID =198, valeur, NULL ) ) AS 'email'
    FROM formulaires_entree_elements2
    WHERE idParent
    IN (
       SELECT id
       FROM formulaires_entrees2
       WHERE idFormulaire = 4
    )
    GROUP BY idParent ) t1
    INNER JOIN (
    SELECT email
       FROM client
       WHERE id_ent = 540
    ) t2 ON t1.email = t2.email
    Merci pour tes conseils avisés.

  5. #5
    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
    Cette requête me semble bien compliquée !

    Qu'est-elle censée faire ?
    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 !

Discussions similaires

  1. Calcul ligne par ligne sur le résultat d'une requête
    Par CanardJM dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/04/2008, 13h06
  2. Effectuer une opération sur le résultat d'une requête
    Par egg3774 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 13/03/2008, 14h29
  3. Requête sur les résultats d'une requête
    Par kiro57 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/10/2007, 17h48
  4. Réponses: 2
    Dernier message: 30/08/2007, 23h03
  5. [Etat] Basé sur le résultat d'une requête
    Par Pascal26 dans le forum WinDev
    Réponses: 13
    Dernier message: 12/04/2007, 09h04

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