Une requête MySQL a besoin des résultats d'une sous-requête à différents endroits, comme celui-ci:
+----------+------+ | count(*) | HASH | +----------+------+ | 0 | 8115e| +----------+------+
4 Réponses :
Si je comprends bien ce que vous essayez d'obtenir, la requête devrait ressembler à ceci:
select count(case xd when 2 then 1 else null end case), hash from sets where id = 1 group by hash
Belle idée, mais cela ne fonctionne pas si xD! = 2 Dans ce cas, le résultat est vide, mais j'ai besoin du hachage AUS une partie du résultat
SELECT si.hash, COUNT(so.hash) FROM sets si LEFT JOIN sets so ON so.hash = si.hash AND so.xd = 2 WHERE si.id = 1
Merci. Cette requête retourne le hachage tout le temps, à droite. Mais cela ne compte pas toutes les autres entrées avec le même hachage.
@Thebndr: Bienvenue! Maintenant, veuillez marquer ma réponse comme acceptée afin que je recevais des points de réputation 15 code> supplémentaires qui gonfleraient mon ego encore plus.
Je suis d'accord avec les autres réponses, que le groupe d'ici peut être meilleur, mais de répondre à la question posée, voici comment éliminer la répétition:
Malheureusement, cela retourne également hachage = null si xd = 2 ne correspond pas :-(
Je nie normalement les énoncés comme le suivant
SELECT Count(ResultA.Hash2) AS Hash2Count, ResultA.Hash1 FROM (SELECT S.Hash AS Hash2, (SELECT s2.hash FROM sets AS s2 WHERE s2.ID = 1) AS Hash1 FROM sets AS S WHERE S.XD = 2) AS ResultA WHERE ResultA.Hash2 = ResultA.Hash1 GROUP BY ResultA.Hash1