Heim >Datenbank >MySQL-Tutorial >Wie wähle ich Elemente aus, die zu mehreren Kategorien in MySQL gehören?

Wie wähle ich Elemente aus, die zu mehreren Kategorien in MySQL gehören?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 22:02:02387Durchsuche

How to Select Items Belonging to Multiple Categories in MySQL?

Auswählen mehrerer Wertübereinstimmungen in einer Datenbankspalte mit MySQL

Problem:

Sie haben eine assoziative Tabelle, in der Elemente angezeigt werden können gehören zu mehreren Kategorien. Wie können Sie nur die Elemente auswählen, die zu einem bestimmten Satz von Kategorien gehören?

Lösung:

Um Elemente auszuwählen, die mehrere spezifische Werte für eine Spalte erfüllen, gibt es Zwei Hauptansätze in MySQL:

Selbstverknüpfungsmethode:

Diese Methode vergleicht mehrere Zeilen aus derselben Tabelle in einem Verknüpfungsvorgang. Um beispielsweise Elemente in den Kategorien 201 und 202 auszuwählen:

SELECT c1.item_id
FROM item_category AS c1
INNER JOIN item_category AS c2 ON c1.item_id = c2.item_id
WHERE c1.category_id = 201 AND c2.category_id = 202

GROUP BY-Methode:

Diese Methode gruppiert Zeilen nach einer Spalte und verwendet COUNT() aggregieren, um zu überprüfen, ob ein Artikel zu allen angegebenen Kategorien gehört. So wählen Sie beispielsweise Elemente in den Kategorien 201 und 202 aus:

SELECT c.item_id, COUNT(*) AS cat_count
FROM item_category AS c
WHERE c.category_id IN (201,202)
GROUP BY c.item_id
HAVING cat_count = 2

Die Wahl zwischen diesen beiden Methoden hängt von der Anzahl der gesuchten Kategorien und Leistungsaspekten ab.

Das obige ist der detaillierte Inhalt vonWie wähle ich Elemente aus, die zu mehreren Kategorien in MySQL gehören?. 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