10
votes

Comment utiliser le résultat d'une sous-requête plusieurs fois dans une requête

Une requête MySQL a besoin des résultats d'une sous-requête à différents endroits, comme celui-ci:

+----------+------+
| count(*) | HASH |
+----------+------+
|        0 | 8115e| 
+----------+------+


0 commentaires

4 Réponses :


0
votes

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


1 commentaires

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



2
votes
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

2 commentaires

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 supplémentaires qui gonfleraient mon ego encore plus.



0
votes

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: xxx


1 commentaires

Malheureusement, cela retourne également hachage = null si xd = 2 ne correspond pas :-(



1
votes

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


0 commentaires