Question

J'ai une comme fonction ajoutais à une base de données entrées ... voici la structure des blocs de données:

**Users**
user_id
user_name
etc.

**Entries**
entry_id
entry_content
etc.

**Likes**
user_id
entry_id

(Il est un peu plus compliqué que cela, il y a des groupes / catégories, mais cela ne devrait l'expliquer bien ...) Voici la requête SQL Je travaille avec au moment:

SELECT 
entries.*,
DATE_FORMAT(entry_date, "%M %D, %Y") as entry_date,
groups.group_short_name,
users.user_name, users.user_id,
FROM entries 
INNER JOIN groups ON groups.group_id = entries.group_id 
INNER JOIN users ON users.user_id = entries.user_id 
ORDER BY entry_date DESC

Je suis en train de récupérer aussi aime par entrée avec cette requête et je me demandais s'il est possible. J'ai essayé:

COUNT(DISTINCT likes.like_id) as likes

avec

LEFT JOIN likes ON likes.entry_id = entries.entry_id

Mais je ne pense pas que ce soit partout près de droite. Suis-je loin? Est-ce possible? Je espère que tout fait sens.

Merci pour l'aide à l'avance.

Était-ce utile?

La solution

Donnez à vos alias tables, pour un ..

FROM entries e

Ensuite, ajoutez une requête de la colonne:

select e.*, (select count(*) from Likes where entry_id = e.entry_id) as entry_likes

Autres conseils

Ajouter:

GROUP BY entries.entry_id

voir si cela fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top