J'ai deux tables (post.id est la clé primaire qui devient la clé secondaire dans like.post_id)
table "post"
user_id post_id likes 10 1 3 10 3 1
Table "Like"
SELECT selfie_info.id,selfie_info.user_id,selfie_info.image, (SELECT COUNT(m.likes)FROM post_likes m WHERE m.user_id='10') as total_likes FROM selfie_info where user_id='10'
maintenant je veux chaque fois que je passe user_id alors je veux obtenir tous les messages des utilisateurs avec un certain nombre de likes de messages
j'ai essayé avec le code suivant mais pas a fonctionné,
id user_id post_id likes 1 10 1 1 2 20 2 1 3 10 1 1 4 10 1 1 3 10 3 1
comment puis-je faire cela? je veux un résultat comme suit (si je passe user_id = 10)
id user_id image 1 10 abc.jpg 2 20 xyz.jpg 3 10 ajb.jpg
3 Réponses :
Vous pouvez utiliser l'agrégation:
select pl.post_id, count(*) as numlikes,
si.*
from selfie_info si join
post_likes pl
on si.user_id = pl.user_id
where si.user_id = 10
group by si.user_id, si.post_id
Vous pouvez utiliser si. * dans le select , même s'il s'agit d'un regrouper par requête car vous agrégez par clé primaire / identifiant unique dans la table.
SELECT p.user_id, p.id AS post_id, COUNT(l.id) AS total_likes FROM post p LEFT JOIN likes l ON l.post_id =p.id WHERE p.user_id=10 GROUP BY p.id;
S'il est possible d'avoir des valeurs dans la colonne likes dans la table comme supérieures à 1, vous devez utiliser SUM (l.likes) insted de COUNT (l.id)
Vous avez toutes les données nécessaires dans le tableau "J'aime" Vous pouvez utiliser une sélection dans le tableau "J'aime".
select user_id, post_id, sum(likes) as likes from like where user_id = 10;
Vous devez compter ou additionner les likes? Dépend de vos besoins Vous pouvez additionner (likes) ou compter (*) likes
«J'aime» dans le tableau «Comme» est-il toujours 1?
@ splash58: Oui