MySQL wählt Join wo und wo

8

Ich habe zwei Tabellen in meiner Datenbank:

Produkte

  • id (int, Primärschlüssel)
  • Name (varchar)

ProductTags

  • Produkt_ID (int)
  • tag_id (int)

Ich möchte Produkte mit allen angegebenen Tags auswählen. Ich habe es versucht:

%Vor%

Aber es gibt mir Produkte mit beliebigen Tags, anstatt alle Tags zu haben. Das Schreiben von WHERE tag_id = 1 AND tag_id = 2 ist sinnlos, da keine Zeilen zurückgegeben werden.

    
Darrarski 16.02.2011, 14:33
quelle

3 Antworten

14

Diese Art von Problem wird als relationale Teilung

%Vor%     
Martin Smith 16.02.2011, 14:35
quelle
0

Sie müssen eine Gruppe mit / count haben, um sicherzustellen, dass alle berücksichtigt werden

%Vor%     
DRapp 16.02.2011 14:37
quelle
0

Der MySQL WHERE fieldname IN (1,2,3) ist im Wesentlichen eine Abkürzung für WHERE fieldname = 1 OR fieldname = 2 OR fieldname = 3 . Wenn Sie also nicht die gewünschte Funktionalität mit WHERE ... IN erhalten, dann wechseln Sie zu OR s. Wenn Ihnen das immer noch nicht die gewünschten Ergebnisse liefert, dann ist WHERE ... IN möglicherweise nicht die Funktion, die Sie verwenden müssen.

    
Jazzerus 16.02.2011 14:40
quelle