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 :

2 requêtes en une seule


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    ---
    Inscrit en
    Janvier 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ---

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut 2 requêtes en une seule
    Bonjour,

    Je souhaiterai, pour des raisons pratiques, savoir s'il est possible de simplifier 2 requêtes qui utilisent la même table en une seule ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php 
    $bdd = new PDO ('mysql:host=localhost;dbname=blabla', 'root', '');
    $req = $bdd->prepare('SELECT forum, MAX(datemessage) AS dernier_message_session FROM forummessages WHERE pseudo= :pseudo GROUP BY forum');
    $array = array
    (
    'pseudo' => $_SESSION['pseudo']
    );
    $req->execute($array);
    while($membre_session = $req->fetch())
    {	
    }
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php 
    $bdd = new PDO ('mysql:host=localhost;dbname=blabla', 'root', '');
    $req = $bdd->prepare('SELECT forum, MAX(datemessage) AS dernier_message FROM forummessages GROUP BY forum');
    $req->execute();
    while($membre_pas_session = $req->fetch())
    {	
    }
    ?>
    Merci d'avance

  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
    Tu peux faire une UNION ou deux sous-requête mais ça sera affreux, pas pratique, inutile.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    ---
    Inscrit en
    Janvier 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ---

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    J'avais regardé pour UNION, mais apparemment c'est pour deux tables. Ici il n'y a qu'une table.
    Je cherche une alternative, car à la base avec mes deux requêtes je suis sensé mettre un "while" dans l'autre, pour pouvoir utiliser des conditions. Ce qui est affreux aussi ...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT forum, MAX(datemessage) AS dernier_message FROM forummessages

    est une requête suffisante. Dès que tu as tes résultats, tu n'as plus qu'à utiliser PHP pour les trier.

    http://php.net/manual/fr/function.max.php
    http://php.net/manual/fr/function.array-unique.php
    Dernière modification par Bovino ; 25/02/2015 à 09h02. Motif: Merci d'indiquer le langage utilisé ([code=xxx]) pour activer la coloration syntaxique !

  5. #5
    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
    Je n'ai pas compris ton histoire de while.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Points : 144
    Points
    144
    Par défaut
    Bonjour,

    Peux-tu essayer une requête de ce type :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT 
        fm.forum, 
        MAX(fm.datemessage) AS dernier_message, 
        MAX(fms.datemessage) AS dernier_message_session 
    FROM forummessages fm
    LEFT JOIN forummessages fms 
        ON fms.forum = fm.forum 
        AND fms.pseudo = :pseudo 
    GROUP BY fm.forum

Discussions similaires

  1. Regrouper les résultats de 3 requêtes en une seule
    Par getz85 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 28/01/2008, 18h39
  2. Regrouper plusieurs requêtes en une seule?
    Par kabkab dans le forum Requêtes
    Réponses: 12
    Dernier message: 28/07/2007, 11h54
  3. [Requêtes] Selectionner une seule date parmis plusieurs
    Par Herman dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 28/03/2007, 15h01
  4. [SQL-SERVER 2000] Problème de requête sur une seule ligne
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/04/2006, 16h54
  5. Regrouper 3 requêtes dans une seule
    Par LadyArwen dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/06/2003, 09h32

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