J'essaie d'énumérer user engagements
unique avec le engagement_type
Comment obtenir des engagements d'utilisateur uniques?
J'avais l'habitude d'avoir la question suivante.
SELECT u.id, u.fname, u.lname FROM (
SELECT id, engagement_type FROM (
SELECT user_id AS id, 'comment'
FROM comments WHERE commentable_id = 48136 AND commentable_type = 'Video'
UNION ALL
SELECT user_id AS id, 'like'
FROM likes WHERE likeable_id = 48136 AND likeable_type = 'Video'
) AS a
GROUP BY id
LIMIT 10
) b JOIN users u USING (id);
Retours:
id | fname | lname
------------------------------
1 | joe | abc
2 | sarah | qer
3 | megan | tryey
4 | john | vdfa
Ce qui est bien. Maintenant, je veux inclure le type d'engagement. Je suis venu avec ceci:
SELECT u.id, u.fname, u.lname, engagement_type FROM (
SELECT id, engagement_type FROM (
SELECT user_id AS id, 'comment' AS engagement_type
FROM comments WHERE commentable_id = 48136 AND commentable_type = 'Video'
UNION ALL
SELECT user_id AS id, 'like' AS engagement_type FROM likes
WHERE likeable_id = 48136 AND likeable_type = 'Video'
) AS a
GROUP BY id, engagement_type
LIMIT 10
) b JOIN users u USING (id);
qui retourne maintenant:
id | fname | lname | engagement_type
---------------------------------------------------
1 | joe | abc | comment
2 | sarah | qer | like
3 | megan | tryey | like
4 | john | vdfa | like
1 | joe | abc | like
3 | megan | tryey | comment
Le seul problème avec ci-dessus. Les résultats ne sont plus uniques. Comme vous pouvez le voir, Joe et Megan ont 2 entrées.
Une idée de comment je peux faire fonctionner ça?
essayez de supprimer la clause 'engagement_type' de la clause' GROUP BY' et vérifiez si elle répond à vos besoins. – SparKot
Cependant, 'joe' avait deux engagements uniques à savoir,' comment' & 'like'. C'est ainsi que "megan". – SparKot
Cela dépend de ce que vous voulez faire. Voulez-vous afficher un seul type d'engagement ou une liste comme "comment, comme"? –