Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupération d'info sur plusieurs tables

Est-ce possible ???

    28 mars 2011 à 21:18:10

    Bonsoir à tous,
    J'aimerais posé une colle aux pros de mysql !!!

    J'ai une requête "incomplète" pour le moment :
    SELECT
    	messagerie_sujet.id_sujet,
    	messagerie_sujet.titre,
    	messagerie_message.id_sujet,
    	messagerie_message.id_membreB,
    	messagerie_message.id_membreA,
    	messagerie_message.id_message,
    	messagerie_message.date,
    	membre_liste.id_membre,
    	membre_liste.pseudo
    FROM messagerie_message
    LEFT JOIN messagerie_sujet ON messagerie_message.id_sujet = messagerie_sujet.id_sujet
    LEFT JOIN membre_liste ON messagerie_message.id_membreB = membre_liste.id_membre
    WHERE messagerie_message.id_membreA = :id
    ORDER BY messagerie_message.id_message ASC LIMIT 1
    


    1. J'aimerais, toujours dans cette requête, savoir si il y a un message "non lu",
    Ce qui revient à vérifier que pour le sujet il y a un enregistrement dans la table "nonlu".
    Est-ce qu'il serait possible de créer, par exemple, un champ "nonlu" qui prendrait pour valeur le nombre de ligne dans la table "nonlu" qui aurait le même id ?

    2. J'aimerai qu'il compte le nombre de message qui ont le même id sujet dans la table "messagerie_message", est-ce possible ?

    Pour ces deux questions, peut-on imaginer ceci :
    SELECT
    	messagerie_sujet.id_sujet,
    	messagerie_sujet.titre,
    	messagerie_message.id_sujet,
    	messagerie_message.id_membreB,
    	messagerie_message.id_membreA,
    	messagerie_message.id_message,
    	messagerie_message.date,
    	membre_liste.id_membre,
    	membre_liste.pseudo,
    		(COUNT(id_nonlu) FROM messagerie_nonlu WHERE messagerie_nonlu.id_sujet = messagerie_message.id_sujet) as nonlu,
    		(COUNT(id_message) FROM messagerie_message WHERE messagerie_message.id_sujet = messagerie_message.id_sujet) as nombre
    FROM messagerie_message
    LEFT JOIN messagerie_sujet ON messagerie_message.id_sujet = messagerie_sujet.id_sujet
    LEFT JOIN membre_liste ON messagerie_message.id_membreB = membre_liste.id_membre
    WHERE messagerie_message.id_membreA = :id
    ORDER BY messagerie_message.id_message ASC LIMIT 1
    


    Voici mes tables.

    Table "Membre_liste" :
    `membre_liste` (
      `id_membre` int(11) NOT NULL auto_increment,
      `pseudo` varchar(55) NOT NULL,
      `mail` varchar(255) NOT NULL,
      `password` varchar(255) NOT NULL,
      `visite` varchar(25) NOT NULL,
      PRIMARY KEY  (`id_membre`)
    


    Table "Messagerie_sujet" :
    `messagerie_sujet` (
      `id_sujet` int(11) NOT NULL auto_increment,
      `titre` varchar(255) NOT NULL,
      PRIMARY KEY  (`id_sujet`)
    


    Table "Messagerie_message" :
    `messagerie_message` (
      `id_message` int(11) NOT NULL auto_increment,
      `id_sujet` int(11) NOT NULL,
      `id_membreA` int(11) NOT NULL,
      `id_membreB` int(11) NOT NULL,
      `message` text NOT NULL,
      `date` varchar(20) NOT NULL
    


    Table "Messagerie_nonlu" :
    `messagerie_nonlu` (
      `id_nonlu` int(11) NOT NULL auto_increment,
      `id_sujet` int(11) NOT NULL,
      `id_membre` int(11) NOT NULL,
      PRIMARY KEY  (`id_nonlu`)
    


    Ps : Si vous comprenez pas, ce que je peux entièrement comprendre, n'hésitez pas à poser des questions !
    • Partager sur Facebook
    • Partager sur Twitter

    Récupération d'info sur plusieurs tables

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown