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