Il semble que vous essayez de compter pour chaque projet le nombre de mots qui surviennent plusieurs fois.
Vous pouvez exécuter votre sous-requête pour tous les projets, puis utiliser un JOIN pour obtenir le reste des données de la table des projets:
SELECT projects.*, COUNT(word) AS cnt
FROM projects
LEFT JOIN (
SELECT project, word
FROM words
GROUP BY project, word
HAVING COUNT(*) > 1
) T1
ON T1.project = projects.id
GROUP BY projects.id
Résultat:
id cnt
1 0
2 1
3 2
données de test:
CREATE TABLE projects (id INT NOT NULL);
INSERT INTO projects (id) VALUES (1), (2), (3);
CREATE TABLE words (project INT NOT NULL, word VARCHAR(100) NOT NULL);
INSERT INTO words (project, word) VALUES
(1, 'a'),
(2, 'a'),
(2, 'b'),
(2, 'b'),
(3, 'b'),
(3, 'b'),
(3, 'c'),
(3, 'c');
Quelle est la structure de la table? Quelle est la requête supposée renvoyer? –