0
votes

Pour un ensemble de données donné, comment puis-je vérifier si l'entrée a l'ensemble du groupe de données?

Traduction avec un exemple:
Pour un ensemble donné de films, comment puis-je obtenir sa catégorie et dire si nous avons obtenu l'ensemble complet comme entrée ou non? XXX PRE>

Par exemple, si je passe dans Hobbit, Hellboy code> comme entrée, je devrais récupérer p> xxx pré>

si je passe dans hobbit, crépuscule code> comme entrée, je devrais revenir p >

SELECT Category, COUNT(*) AS GRP_COUNT 
FROM movie
WHERE Movies IN (@movies)
GROUP BY Category


0 commentaires

3 Réponses :


0
votes

édité: Donc, j'ai mal interprété la question et posté la mauvaise réponse précédemment. Mais ne vous inquiétez pas, j'ai apporté un amendement à la requête que j'ai postée plus tôt. En ce qui concerne "sans utiliser la sous-requête", je ne peux pas penser un moyen; p xxx


0 commentaires


0
votes

Cette requête a quelques parties difficiles:

  • comparer les correspondances de votre liste au total de la catégorie. LI>
  • Sélectionner uniquement les catégories correspondant. li> ul>

    Vous pouvez les résoudre à l'aide de l'agrégation conditionnelle. C'est-à-dire que le filtre dans les fonctions d'agrégation plutôt que dans le où code>: p> xxx pré>

    le avoir code> ne renvoie que des catégories qui ont Un film correspondant. P>

    Si vous souhaitez uniquement répercuter les films d'entrée une fois, vous pouvez utiliser une sous-requête: P>

    select category,
           group_concat(case when has_movie then movie end) as movies,
           ( count(*) = sum(has_movie) ) as has_full_set
    from (select m.*,
                 (m.movie in ( . . . )) as has_movie
          from m
         ) m
    group by category
    having sum(has_movie) > 0;
    


0 commentaires