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 :

Requêtes imbriquées à trois niveaux


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut Requêtes imbriquées à trois niveaux
    Bonjour à tous,

    Ceci sera mon seul et unique appel. Sans réponse à ce message, j'envisagerai sérieusement de me jeter dans l'escalier. Tant pis. Fin de l'histoire.

    Ca fait 3 jours que je me bats avec une requête (sous MySQL 5.1, en l'occurrence, mais je doute que le chimilblic vienne de là).

    La requête (simplifiée à mort (d'où le 1=1), mais le problème est isolé) :

    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  MAIN_url.Id 
     
    FROM url AS MAIN_url 
     
    WHERE   
                 1 = 1
     
            AND
     
                 (   
                      SELECT COUNT( *) 
                      FROM ( 
                              SELECT Valide 
                              FROM commentaire 
                              WHERE IdUrl = MAIN_url.Id
                              ORDER BY DateCommentaire DESC 
                              LIMIT 0, 2 
                            ) AS Plus_recent_commentaire
                      WHERE Valide = 1
                 ) >= 1
    La tentative d'exécution dudit code me renvoie à l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'MAIN_url.Id' in 'where clause'
    Il semble ne pas vouloir, dans le SELECT le plus imbriqué, récupérer la table MAIN_url du SELECT le moins imbriqué.

    J'ai essayé de contourner le problème en formulant ma requête différemment. Mais je n'y arrive pas.

    La personne qui me sortira de ce mauvais pas, aura le droit, à sa convenance :
    - à ma gratitude infinie pendant plusieurs heures consécutives
    - à une vidéo de moi-même me flagellant
    - à un massage des pieds, même sales

    Je suis près à tout, ptdrrrrrr. J'vais craquer....

  2. #2
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    tu es dans la pub ? en voila un titre choc

    et comme cela ?
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT Main_Url.Id
      FROM Url AS Main_Url
      WHERE 1 = 1
              AND EXISTS(SELECT COUNT(*) AS Nb
                           FROM (SELECT Valide
                                   FROM Commentaire
                                   WHERE Commentaire.Idurl = Main_Url.Id
                                   ORDER BY Datecommentaire DESC Limit 0, 2) AS Plus_Recent_Commentaire
                           WHERE Plus_Recent_Commentaire.Valide = 1 HAVING COUNT(*) > 1)


    si ca marche, j'attends la

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut
    Citation Envoyé par dehorter olivier Voir le message
    si ca marche, j'attends la
    Ptdrrrrrr, tu préfères pas que je m'occupe de tes pieds ?

    Bon, j'essais ta requête...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut
    Olivier, olivier, olivier...

    Ta requête retourne la même erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Unknown column 'Main_Url.Id' in 'where clause'
    J'ai vraiment du mal sur ce coup....

  5. #5
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    j'ai un peu modifié la requête

    et ça marche chez moi (attention pas sous mysql)

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT Main_Url.Id
      FROM Url AS Main_Url
      WHERE 1 = 1
              AND EXISTS(SELECT COUNT(*) AS Nb
                           FROM (SELECT Valide
                                   FROM Commentaire
                                   WHERE Commentaire.Idurl = Main_Url.Id
                                           AND Commentaire.Valide = 1
                                   ORDER BY Datecommentaire DESC Limit 0, 2) AS Plus_Recent_Commentaire
                           HAVING COUNT(*) > 1)

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    En dehors de tout problème syntaxique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... EXISTS(SELECT COUNT(*) ...
    Est toujours vrai si je ne m'abuse.

    Vous devriez déjà donner la structure des tables, un jeu de données exemple et le résultat attendu.

    Edit : J'avais pas vu le having

Discussions similaires

  1. Pb requête imbriquée
    Par ddams dans le forum Requêtes
    Réponses: 11
    Dernier message: 20/04/2004, 12h13
  2. [Requête] Faire une requête imbriquée?
    Par sekiryou dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/01/2004, 22h52
  3. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  4. Requêtes imbriquées ?
    Par Ph. B. dans le forum XMLRAD
    Réponses: 7
    Dernier message: 06/05/2003, 13h19
  5. 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