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

PHP & Base de données Discussion :

Affichage requête imbriquée [MySQL]


Sujet :

PHP & Base de données

  1. #1
    sql
    sql est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Affichage requête imbriquée
    Bonjour,

    je ne comprend pas pourquoi je n'arrive pas à afficher la requête suivante:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php
     
    $req=mysql_query(
     
    "select distinct choix
    from test
    where nom = 'xxx'
    and choix IN (
    	Select choix 
    	from test 
    	where nom = 'yyy')
    	and choix IN (
    		Select choix 
    		from test 
    		where nom = 'zzz')
    		and choix IN (
    			Select choix 
    			from test 
    			where nom = 'aaa')
    			and choix IN (
    				Select choix 
    				from test 
    				where nom = 'vvv')
    					and choix IN (
    					Select choix 
    					from test 
    					where nom = 'sss' ");
     
    while ($voir=mysql_fetch_array($req)) 
     {
    echo
    $voir["choix"];
    }
     
    ?>
    J'obtiens un message d'erreur de ce type:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/e/7/travisweb2/test/resultat.php on line 138

    A noter que cette requête fonctionne très bien depuis PhpMyAdmin!

    Je ne comprend pas ce qui cloche! Ma version de Mysql est la 5.0.19!


    Est-ce que qqn pourrait m'expliquer please

    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Il te manque une parenthèse dans le dernier SELECT IN il me semble.
    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
    22
    23
    24
    25
    $req=mysql_query(
     
    "select distinct choix
    from test
    where nom = 'xxx'
    and choix IN (
       Select choix
       from test
       where nom = 'yyy')
       and choix IN (
          Select choix
          from test
          where nom = 'zzz')
          and choix IN (
             Select choix
             from test
             where nom = 'aaa')
             and choix IN (
                Select choix
                from test
                where nom = 'vvv')
                   and choix IN (
                   Select choix
                   from test
                   where nom = 'sss') ");

  3. #3
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    Ote moi d'un doute, tu utilise bien mysql_connect() pour te connecter à ta bdd.

    Essaie de placer des "or die" pour pouvoir savoir ou peut se trouve l'erreur. Aussi essaie plutot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $query = tarequete;
    $req = mysql_query($query) or die("erreur requete");
    ...
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

  4. #4
    sql
    sql est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Honte à mo! C'était bien cette fichue parenthèse qui faisait bugger le truc! Bien vu Raideman!

    A force de voir des lignes de code, on s'embrouille les méninges! lol

    Ote moi d'un doute, tu utilise bien mysql_connect() pour te connecter à ta bdd.
    Oui oui, bien évidemment!

    Merci bien!

    A++

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Si ta requête ressemble vraiment à cela, ne serait-il pas plus efficace d'y aller avec des OR plutôt que de répéter la même sous requête ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WHERE nom = 'xxx'
    OR nom = 'yyy'
    O nom = 'zzz';

  6. #6
    sql
    sql est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Salut

    Si ta requête ressemble vraiment à cela, ne serait-il pas plus efficace d'y aller avec des OR plutôt que de répéter la même sous requête ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    WHERE nom = 'xxx'
    OR nom = 'yyy'
    O nom = 'zzz
    ';
    Je crains ne pas obtenir exactement le même résultat ainsi! Ce que je souhaite c'est pouvoir connaître les choix communs des 6 personnes en question, et non pas seuleuement les choix communs de 2,3,4, ou 5 personnes (si tu vois ce que je veux dire^^ )!

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

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