Heim >Datenbank >MySQL-Tutorial >Wie wähle ich mit SQL Angebote aus, die alle angegebenen Sportarten enthalten?

Wie wähle ich mit SQL Angebote aus, die alle angegebenen Sportarten enthalten?

DDD
DDDOriginal
2024-12-18 04:46:10226Durchsuche

How to Select Offers Containing All Specified Sports Using SQL?

SQL, bei dem die verknüpfte Menge alle Werte enthalten muss, aber möglicherweise mehr enthält

In relationalen Datenbankverwaltungssystemen (RDBMS) ist es häufig erforderlich, Daten basierend auf bestimmten Bedingungen abzurufen . In diesem speziellen Szenario besteht die Aufgabe darin, Zeilen aus der Angebotstabelle auszuwählen, die alle in einem bestimmten Array angegebenen Sportarten enthalten, möglicherweise aber auch zusätzliche Sportarten.

Um dieses Ergebnis zu erzielen, kann die folgende SQL-Abfrage ausgeführt werden verwendet:

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;

Aufschlüsselung der Abfrage:

  • Die JOIN-Anweisungen stellen Beziehungen zwischen den Sportarten, Angeboten_Sportarten und Angeboten her Tabellen.
  • Die WHERE-Klausel filtert die Sporttabelle basierend auf den angegebenen Sportnamen.
  • Die GROUP BY-Anweisung gruppiert die Ergebnisse nach der Spalte „offer_id“ aus der Angebotstabelle.
  • Die HAVING-Klausel prüft, ob jede Gruppe genau zwei eindeutige Sportnamen enthält.

Zusammenfassend ruft diese SQL-Abfrage Angebote ab, die die angegebenen Kriterien erfüllen, und stellt so sicher, dass Alle erforderlichen Sportarten sind vorhanden, ohne Angebote auszuschließen, die zusätzliche Sportarten beinhalten.

Das obige ist der detaillierte Inhalt vonWie wähle ich mit SQL Angebote aus, die alle angegebenen Sportarten enthalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn