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 :

Variables et requêtes imbriquée


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut Variables et requêtes imbriquée
    Bonjour,

    J'ai un BDD avec des études et des pharmacies. Je peux attribuer une étude à une pharmacie dans la table de relation ph_pharmacieEtude qui comporte les champs idPharmacie et idEtude (ainsi que le champs id autoincrémenté).

    Je recherche toutes les pharmacies qui sont sur 4 études. J'ai créé pour cela la requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT P.email AS email,P.id AS idPharm
    			FROM ph_pharmacie P 
    			WHERE 
    (SELECT * FROM (SELECT count(R.id) AS nb FROM ph_pharmacieEtude R WHERE R.idPharmacie=idPharm) B WHERE B.nb=4)
    Mais j'ai l'erreur Unknown column 'idPharm' in 'where clause' . MySQL n'arrive pas à lire la variable idPharm dans la requête imbriquée. J'ai essayé de remplacer par P.id mais c'est pareil.

    Pourriez vous m'aider ?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Premièrement, il manque un EXISTS dans ta requête pour qu'elle soit compréhensible par l'interpréteur.
    Ensuite, l'alias de colonne que tu déclares dans la requête principale n'est pas visible au niveau de ta sous-requête. Il faut donc faire référence à l'expression initiale.
    Ce qui donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT  p.email AS email
        ,   p.id    AS idPharm
    FROM    ph_pharmacie p 
    WHERE   EXISTS 
            (   SELECT  * 
                FROM    (   SELECT  COUNT(R.id) AS nb
                            FROM    ph_pharmacieEtude r 
                            WHERE   r.idPharmacie = p.id
                        )   B 
                WHERE   b.nb = 4
            )
    La sous-requête peut être simplifiée en utilisant HAVING :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT  p.email AS email
        ,   p.id    AS idPharm
    FROM    ph_pharmacie p 
    WHERE   EXISTS 
            (   SELECT  1 
                FROM    ph_pharmacieEtude r 
                WHERE   r.idPharmacie = p.id
                HAVING  COUNT(r.id)   = 4
            )
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

Discussions similaires

  1. Requêtes imbriquées - retenir variable
    Par Laurent04 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/02/2013, 15h58
  2. Variables et requête imbriqué pour du dénombrement
    Par Ceubex dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/07/2012, 15h55
  3. Réponses: 3
    Dernier message: 25/01/2007, 14h12
  4. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15

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