Conception d'une req pour récupérer MPs d'un membre.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Conception d'une req pour récupérer MPs d'un membre.

Re: Conception d'une req pour récupérer MPs d'un membre.

par Nico » 23 oct. 2014, 18:02

Salut,
je n'avais pas vu qu'une réponse avait été posé, mes excuses..

Je teste rapidement ta requête pour voir si elle ressort bien ce dont j'ai besoin, et effectivement je voyais plusieurs codes avec une seule et même table, mais en regardant les MPs de divers sites, je voyais qu'ils utilisaient une notion de conversations contenant des messages, je pensais que cela été plus cohérent (peut être car ils peuvent ajouter plusieurs personnes a une meme conv).

Et oui, c'est bien pour voir si le message que l'on a envoyé a été lu ou pas encore, sorte d'accusé de réception.

Merci, je te tiens au courant.

Re: Conception d'une req pour récupérer MPs d'un membre.

par moogli » 16 oct. 2014, 22:44

salut,

elle sert a rien la 1ère table O_o
tu fais une auto jointure sur la table message en utilisant l'id du premier message pour suivre les autres (avec une colonne id_parent fk de la même table sur id).


sinon sur le principe il faut que tu sélectionne les infos deux tables avec deux jointures sur la table utilisateur
a quoi peux servir la colonne status_expéditeur ? pour savoir l'expéditeur a bien lu son message ?

une requête dans le style devrait t'aider
SELECT
  m.id,
  message,
  status_destinataire,
  status_expediteur,
  expediteur_id,
  destinataire_id,
  conv_id,
  created_at,
  updated_at,
  u1.nom                                                           nomExpe,
  u1.prenom                                                        prenomExpe,
  u2.nom                                                           nomdest,
  u2.prenom                                                        prenomdest,
  (SELECT count(1)
   FROM messagerie_messages_reseau m2
   WHERE m2.conv_id = m.conv_id AND m2.status_destinataire = 0) AS nbnonlu
FROM messagerie_messages_reseau m
  JOIN users u1 ON expediteur_id = u1.id
  JOIN users u2 ON destinataire_id = u2.id
WHERE expediteur_id = sid OR destinataire_id = sid
GROUP BY conv_id

Conception d'une req pour récupérer MPs d'un membre.

par Nico » 14 oct. 2014, 11:59

Bonjour,

Je galère depuis plusieurs jours pour pondre ma requête affichant les conversations du membre connecté et l'affichage du dernier msg recu, j'en demande à votre expérience et logique surement plus affuté...

Table des conversations
Capture d’écran 2014-10-14 à 11.51.42.png
Table des messages (les champs status sont pour 0 = non lu, 1 = lu)
Capture d’écran 2014-10-14 à 11.51.24.png
Et une table users classique : ID, nom, prenom,...


Je souhaite afficher les informations suivantes sur ma page des messages :

Afficher toutes les conversations où le membre connecté est présent (dans destinataire ou expediteur ID) regroupé par conversations avec l'affichage du dernier message recu+date, le nom et prénom de la personne avec qui le membre a conversé (c'est donc soit destinataire soit expediteur..) et cerise sur le gateau une information si la conversation contient des messages non lu (et si possible combien).

Est ce possible depuis ma structure de BDD ?

Merci bien à ceux qui m'éclaireront.