MYSQL joint, DISTINCT

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 : MYSQL joint, DISTINCT

Re: MYSQL joint, DISTINCT

par 11inq » 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?

Re: MYSQL joint, DISTINCT

par Spols » 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.

Re: MYSQL joint, DISTINCT

par 11inq » 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

Re: MYSQL joint, DISTINCT

par Spols » 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

MYSQL joint, DISTINCT

par 11inq » 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