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 :

Imbriquer deux requêtes sql pour avoir un seul résultat


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 84
    Points : 48
    Points
    48
    Par défaut Imbriquer deux requêtes sql pour avoir un seul résultat
    Bonjour à tous !

    J'ai deux requêtes sql qui affichent chacun des résultats, et j'aimerais les imbriqués. J'ai pas mal cherché mais la je sèche.

    Voila mon code :

    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
     
    $liste1=mysql_query("select max(k) as idmax,min(lu) as idlu,max(tamp) as idtamp,max(ka) as idde from `mp` where `kde`='".$_SESSION['mbid']."' && `delde`!='1' group by `ka` order by `idmax` desc");
    while($liste=mysql_fetch_array($liste1)){
     
    $listepseudo=mysql_fetch_array(mysql_query("select `pseudo`,`sexe` from `user` where `k`='".$liste['idde']."' "));
     
    echo'<li';if($liste['idlu']>='1') echo ' class="mp-cla8a"';echo'><a href="'.$URL['messagerie'].'?go=sup&id='.$liste['idde'].'&id2='.$_SESSION['mbid'].'" onclick="if (!confirm(\'Supprimer ?\')) return false;"><img src="'.$URL['dizimg'].'/mp-ligne1.png" class="mp-cla9" /></a><a href="http://www.***.com/messagerie.html?go=lire&lirede='.$liste['idde'].'&lirea='.$_SESSION['mbid'].'">'.date('d/m à H:i',$liste['idtamp']).' - <b>'.getsql($listepseudo['pseudo']).'</b> - <img src="'.$URL['dizimg'].'/sexe'.$listepseudo['sexe'].'.png" /> ';if($liste['idlu']>='1') echo'(lu)'; else echo'(non lu)';echo'</a></li>'."\n".'';
    }
     
     
    $liste1=mysql_query("select max(k) as idmax,min(lu) as idlu,max(tamp) as idtamp,max(kde) as idde from `mp` where `ka`='".$_SESSION['mbid']."' && `dela`!='1' group by `kde` order by `idmax` desc");
    while($liste=mysql_fetch_array($liste1)){
     
    $listepseudo=mysql_fetch_array(mysql_query("select `pseudo`,`sexe` from `user` where `k`='".$liste['idde']."' "));
     
    echo'<li';if($liste['idlu']>='1') echo ' class="mp-cla8a"';echo'><a href="'.$URL['messagerie'].'?go=sup&id='.$liste['idde'].'&id2='.$_SESSION['mbid'].'" onclick="if (!confirm(\'Supprimer ?\')) return false;"><img src="'.$URL['dizimg'].'/mp-ligne1.png" class="mp-cla9" /></a><a href="http://www.***.com/messagerie.html?go=lire&lirede='.$liste['idde'].'&lirea='.$_SESSION['mbid'].'">'.date('d/m à H:i',$liste['idtamp']).' - <b>'.getsql($listepseudo['pseudo']).'</b> - <img src="'.$URL['dizimg'].'/sexe'.$listepseudo['sexe'].'.png" /> ';if($liste['idlu']>='1') echo'(lu)'; else echo'(non lu)';echo'</a></li>'."\n".'';
    }
    J'aimerais que ces deux codes soit imbriqués afin d'afficher qu'un seul résultat avec les deux codes.

    Un grand merci !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Peut être même une seule requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql = "SELECT pseudo, sexe, idmax, idlu, idtamp, idde 
               FROM `user`u JOIN  
                     (SELECT MAX(k) as idmax, MIN(lu) as idlu, MAX(tamp) as idtamp, MAX(ka) as idde FROM `mp`
                       WHERE (`kde`='".$_SESSION['mbid']."' && `delde`!= 1) OR (`ka`='".$_SESSION['mbid']."' && `dela`!= 1 
                       GROUP BY ka) mp2 
                ON u.k = mp2.idde
                ORDER BY idmax DESC";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 84
    Points : 48
    Points
    48
    Par défaut
    Merci pour ta réponse, mais malheureusement cela ne fonctionne pas rien ne s'affiche.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    "rien ne s'affiche" c'est pas de debugage ça.
    Tu as testé la requête ? Je l'ai écrite a vu d'oeil, elle n'est pas garantie sans arrête mais il n'y que toi qui peut tester.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 84
    Points : 48
    Points
    48
    Par défaut
    J'ai ça comme erreur :

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/www/vhosts/***.com/httpdocs/design/messagerie.php on line 94
    et à la ligne 94 j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while($liste=mysql_fetch_array($liste1)){
    Merci encore

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il y a mysql_error() pour debuguer une requête.

    Mais je vois que j'ai oublié une parenthèse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql = "SELECT pseudo, sexe, idmax, idlu, idtamp, idde 
               FROM `user`u JOIN  
                     (SELECT MAX(k) as idmax, MIN(lu) as idlu, MAX(tamp) as idtamp, MAX(ka) as idde FROM `mp`
                       WHERE (`kde`='".$_SESSION['mbid']."' && `delde`!= 1) OR (`ka`='".$_SESSION['mbid']."' && `dela`!= 1)
                       GROUP BY ka) mp2 
                ON u.k = mp2.idde
                ORDER BY idmax DESC";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Imbriquer deux requêtes SQL
    Par PREUX dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/11/2013, 19h06
  2. Comment faire pour avoir une seule requête ?
    Par abdo1966 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/04/2013, 11h53
  3. [MySQL] Requête Sql pour avoir les mois coulant
    Par nitro97130 dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 03/12/2012, 05h06
  4. regrouper deux requêtes sql en un seul
    Par eddjalal dans le forum Développement
    Réponses: 0
    Dernier message: 14/01/2011, 15h47
  5. Syntaxe pour avoir un seul resultat dans une requete
    Par Pompil dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/09/2003, 15h51

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