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 :

Utilisation du resultat d'un select imbriqué


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Par défaut Utilisation du resultat d'un select imbriqué
    Bonjour à tous,

    Tout d'abord je voudrai remercier SQLPro pour son super article sur la gestion "élégante" d'une arborescence (méthode intervalaire).

    Je viens aussi pour vous soumettre mon probleme.

    Je souhaite utiliser le resultat d'un select imbriqué dans une premiere requete aliasé dans le WHERE de la requete principale.

    Voici un exemple de requete qui ne fonctionne pas (Unknow field ...).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT*, (SELECT rw_lib from categorie_article ca WHERE ca.id_categorie = a.id_categorie) AS truc  
    FROM article a
    WHERE truc = 'en_famille'
    Vous allez me dire qu'il faut faire une jointure, mais il s'agit simplement d'un exemple d'illustration. Il y a en fait une vraie requete (qui se base sur une sous-requete du meme type que celle exposée par SQLPro dans son article sur l'arborescence).

    Donc, est-ce qu'il est possible d'utiliser directement la variable "truc" dans le where ou dois-je répéter la sous-requete ?

    Je precise que je travaille sous MySQL (4 et 5).

    En vous remerciant d'avance !

    A bientot

  2. #2
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    Pour utiliser le truc dans ta requette principale, tu dois mettre ta sous requette dans ton from :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT* 
    FROM article a, (SELECT rw_lib FROM categorie_article ca WHERE ca.id_categorie = a.id_categorie) AS truc 
    WHERE truc = 'en_famille'

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Par défaut
    Merci je viens de tester et ça ne fonctionne pas mieux, l'erreur vient maintenant du fait qu'il n'arrive plus a faire le lien avec la table article.

    Meme si je met l'id de la categorie en dur dans la requete, il m'est impossible d'utiliser la variable dans la requete.

    Par ailleurs pour mieux situer le probleme,voici la requete telle qu'elle devrait etre au final ainsi que la solution provisoire pour me permettre de filtrer

    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
    19
    20
    21
    SELECT SQL_CALC_FOUND_ROWS e.idevent AS id_event, e.artiste AS artiste,
    e.titreevent AS titre_event, e.datedebutevent AS debut, 
    e.datefinevent AS fin, e.horaireevent AS horaire ,ruba.id_rubrique AS id_rubrique, ruba.nom_rubrique AS rubrique,
     
    	(SELECT rubb.nom_rubrique FROM rubriques_v2 rubb WHERE rubb.bg < rube.bg AND rubb.bd > rube.bd AND rubb.niveau = rube.niveau-1) as categorie,
    	(SELECT rubc.nom_rubrique FROM rubriques_v2 rubc WHERE rubc.bg < ruba.bg AND rubc.bd > ruba.bd AND rubc.niveau = 0) as section,
     
    l.nomlieu AS lieu, cp.cp_ville AS ville, dep.codedepartement AS id_departement, dep.nomdepartement AS departement , reg.nomregion AS region, reg.idregion AS id_region, pays.nompays AS pays, img.nomimage AS image, img.urlimg AS url, img.urlimgvignette AS thumb, img.credit AS credit_image, img.idimg AS id_image, l.idlieu AS id_lieu, cp.idville AS id_ville, dep.codedepartement as id_departement FROM evenements e
    LEFT JOIN lieux l ON l.idlieu = e.idlieu
    LEFT JOIN codpostal cp ON l.idville = cp.idville
    LEFT JOIN region reg ON cp.idregion = reg.idregion
    LEFT JOIN departement dep ON dep.codedepartement = cp.iddept
    LEFT JOIN pays pays ON pays.idpays = cp.cp_pays
    LEFT JOIN imguser img ON img.idimg = e.urlimg
    LEFT JOIN rubriques_v2 ruba ON e.idrubrique = ruba.id_rubrique
    LEFT JOIN rubriques_v2 rube ON e.idrubrique = rube.id_rubrique
    WHERE 
     
    (SELECT rubc.nom_rubrique FROM rubriques_v2 rubc WHERE rubc.bg < ruba.bg AND rubc.bd > ruba.bd AND rubc.niveau = 0) = 'Ma rubrique'
     
    LIMIT 0,2000
    Merci encore à vous !

  4. #4
    Membre Expert
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Par défaut
    Bonjour,

    Est-ce que ceci fonctionne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT*, (SELECT rw_lib FROM categorie_article ca WHERE ca.id_categorie = a.id_categorie) AS truc  
    FROM article a
    HAVING truc = 'en_famille'
    Je ne sais plus si GROUP BY est obligatoire dans ce cas.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Par défaut Merci !
    Bonjour,

    Cela fonctionne en effet, merci pour votre aide, je passe le sujet en Résolu !

    A bientot.

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 26/11/2014, 14h30
  2. Réponses: 3
    Dernier message: 27/07/2011, 11h57
  3. Réponses: 2
    Dernier message: 03/05/2008, 09h07
  4. utiliser le resultat d´un select dans une fonction
    Par charlie_p07 dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 12/03/2008, 20h54
  5. Requete Update avec Select imbriqué: etrange resultat!
    Par corentone dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/08/2007, 15h05

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