MYSQL joint, DISTINCT

Eléphanteau du PHP | 40 Messages

01 oct. 2020, 14:12

Bonjour,
commet obtenir une seule ligne de la requête si la valeur de la colonne "conversation" est identique dans plusieurs lignes?
Voici mon code

Code : Tout sélectionner

SELECT DISTINCT messages.message, messages.conversation FROM `participants` JOIN `messages` ON user = 'admin'
Ce que j'obtiens:
message - conversation
bonjour - conv1
oui - conv6
ça va? - conv 1
non - conv6

Ce que je voudrais:
message - conversation
bonjour - conv1
ça va? - conv6


Merci d'avance

Mammouth du PHP | 1967 Messages

02 oct. 2020, 08:16

utilise group by,

par contre le résultat que tu veux n'est pas logique, si "ça va?" est de conv1 tu peux pas l'avoir avec conv6
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 40 Messages

02 oct. 2020, 11:47

utilise group by,

par contre le résultat que tu veux n'est pas logique, si "ça va?" est de conv1 tu peux pas l'avoir avec conv6
Merci c'est impeccable
concernant la logique en effet si on suit mon tableau logiquement il n'y a pas de logique, j'ai juste donné de mauvaises exemples en fait
une autre question

Code : Tout sélectionner

SELECT DISTINCT messages.conversation, messages.date, messages.sendby, users.prenom, users.nom, color as unitecolor, message as lastmessage FROM `participants` LEFT JOIN `messages` ON messages.conversation = participants.conversation LEFT JOIN users ON messages.sendby = users.identifiant LEFT JOIN unites ON unites.id = users.unite WHERE (messages.sendby <> 'admin' AND participants.user = 'admin') GROUP BY conversation ORDER BY messages.id DESC
pour lastmessage comment je pourrai avoir le dernier message de la conversation et non le derniermessage de la conversation envoyé par sendby?
Merci d'avance

Mammouth du PHP | 1967 Messages

02 oct. 2020, 14:06

je suis pas sur de comprendre ta structure de bdd.

essaye de metttre une condition supplémentaire dans ta jointure.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 40 Messages

02 oct. 2020, 14:28

je suis pas sur de comprendre ta structure de bdd.

essaye de metttre une condition supplémentaire dans ta jointure.
Pour simplifier dans la BDD j'ai 3 tables
table 1 : users
ID - NOM - PRENOM

table 2: messages
ID - date - sendby - message - conversationid

table 3: participants
ID - conversationid - participantUserID

ce que je veux obtenir des ces tables

une liste ou dans chaque element je vois:
le id de la conversation
le id de la personne qui a envoyé le dernier message (sauf moi)
le dernier message envoyé dans la conversation (ça peut être aussi mon message)
la date de cette dernière message envoyé

est ce qu'il faudrait plus d'info?