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 imbriquée, ou pas, avec résultat nul


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Par défaut Requête imbriquée, ou pas, avec résultat nul
    Bonjour,

    J'ai un problème en SQL, je fais une requête imbriquée pour extraire des informations d'une table et de les utilisées dans pour une autre table au sein d'u ne même requête. une requête imbriquée quoi... ou autre

    mes requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT * FROM gallery WHERE gallery_id = (SELECT link_gallery_id FROM link_page_gallery WHERE link_page_id = ".$id_page.")";
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT DISTINCT * FROM gallery, link_page_gallery  WHERE link_page_id = ".$id_page." AND gallery_id = link_gallery_id" ;
    le problème est le suivant, si le résultat de la requête imbriquée est vide, ce qui peut arriver car il n'y a pas de contraintes de résultat minimum, la fonction mysql_error() me retourne une erreur syntaxique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
    Quand la requête contient un résultat au moins tout se passe bien.

    et sous phpMyAdmin, j'execute la requête sans résultat sans souci, il me retourne un tableau vide.

    Je pense que le problème vient du retour de la première requête qui est mal interprétée.

    Avez vous une idée pour éléminer ce problème pour le moins très bloquant ?

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Pourquoi ne pas passer par une jointure, tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT g.*
    FROM gallery g
    INNER JOIN link_page_gallery lpg ON g.gallery_id = lpg.link_gallery_id
    WHERE lpg.link_page_id = ".$id_page."
    Ca ne fait pas ce que tu souhaites ?
    Au besoin, si il n'y a pas de correspondance entre les deux tables et que tu souhaites quand même avoir les gallery sans correspondance, il faut remplacer le INNER JOIN par un LEFT JOIN.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Par défaut
    merci pour ta réponse.

    une jointure, oui, j'ai aussi essayé, toute mes syntaxes sont bonnes, je ne pense pas que le problème vienne de la formulation de la requête mais plutôt de la gestion du résultat par les fonction mysql_ de php car

    j'obtient un résultat en SQL via phpmyadmin et une erreur en php quand le sous ensemble est vide (requête sur la table de liaison)

    j'obtient un résultat en SQL via phpmyadmin ET en php quand le sous ensemble contient au moins une ligne.

    soit :

    le seul problème est que mysql_error me retourne une erreur alors que la seul variable qui change à chaque fois est le fait qu'il y ai au moins un résultat ou non.

    Je ne sais pas si je suis bien clair ... ^^

    merci en tout cas

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Par défaut
    La réponses à ma requête imbriquée était NULL donc errueur syntaxique.

    voilà.

    merci encore

    bonne soirée

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

Discussions similaires

  1. Requête par adresse, pas de résultat avec certains caractères accentués
    Par sylvaingeo dans le forum IGN API Géoportail
    Réponses: 1
    Dernier message: 18/09/2012, 12h37
  2. Problème requêtes imbriquées (ou pas ?)
    Par maccormick dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/07/2011, 09h10
  3. Réponses: 11
    Dernier message: 09/06/2010, 15h06
  4. Réponses: 4
    Dernier message: 24/06/2008, 12h18
  5. requête sql : caractères accentués et résultat nul
    Par mappy dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/08/2006, 12h27

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