Maison > base de données > tutoriel mysql > Comment sélectionner des offres contenant tous les sports spécifiés à l'aide de SQL ?

Comment sélectionner des offres contenant tous les sports spécifiés à l'aide de SQL ?

DDD
Libérer: 2024-12-18 04:46:10
original
221 Les gens l'ont consulté

How to Select Offers Containing All Specified Sports Using SQL?

SQL où l'ensemble joint doit contenir toutes les valeurs mais peut en contenir davantage

Dans les systèmes de gestion de bases de données relationnelles (SGBDR), il est souvent nécessaire de récupérer des données en fonction de conditions spécifiques . Dans ce scénario particulier, la tâche consiste à sélectionner des lignes de la table des offres qui incluent tous les sports spécifiés dans un tableau donné, tout en contenant potentiellement des sports supplémentaires.

Pour obtenir ce résultat, la requête SQL suivante peut être utilisé :

SELECT o.*
FROM   sports        s
JOIN   offers_sports os ON os.sport_id = s.id
JOIN   offers        o  ON os.offer_id = o.id
WHERE  s.name IN ('Bodyboarding', 'Surfing')
GROUP  BY o.id
HAVING count(*) = 2;
Copier après la connexion

Décomposition de la requête :

  • Les instructions JOIN établissent des relations entre les sports, les offres_sports et les offres tables.
  • La clause WHERE filtre la table des sports en fonction des noms de sports spécifiés.
  • L'instruction GROUP BY regroupe les résultats par la colonne offer_id de la table des offres.
  • La clause HAVING vérifie si chaque groupe contient exactement deux noms de sport uniques.

En résumé, cette requête SQL récupère les offres qui répondent aux critères spécifiés, garantissant que tous les sports obligatoires sont présents sans exclure les offres incluant des sports supplémentaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal