1
votes

Compter en jointures dans SQL

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


2 commentaires

«J'aime» dans le tableau «Comme» est-il toujours 1?


@ splash58: Oui


3 Réponses :


0
votes

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.


0 commentaires

1
votes
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;

1 commentaires

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)



0
votes

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


0 commentaires