DelphiKing
King with a crown
- 20 April 2006
- 6.553
- 729
Aloha,
sorry für den doofen Titel, wusste es nicht besser auszudrücken
Ich habe eine Tabelle mit u.a. drei (im einfachen Fall, könnten auch mehr sein) Spalten "c1", "c2" und "c3" (int), die alle so eine Art Tag oder Kategorie repräsentieren. Eine Zeile hat also immer bis zu drei (gleichwertige) Kategorien.
Nun habe ich so ein Tripel (z.B. $v1, $v2, $v3) gegeben und möchte mit einer möglichst übersichtlichen MySQL-Anfrage alle items haben, bei denen mindestens zwei der drei Kategorien übereinstimmen.
Die naheliegendste und stupide Lösung wäre ja, alle möglichen Kombinationen durchzutesten, aber die resultierende Anfrage wäre wohl eine ganze DinA4-Seite lang
Kann ich in MySQL wenigstens testen, ob ein Elementwert in einer Menge liegt?
Also sowas wie
Weiß leider nicht, nach was ich suchen muss resp. wie das heißt ...
lg,dk
Edit/PS: Keine Kommentare zur bestehenden DB-Struktur, ist nicht mein Projekt, lässt sich nicht ändern und ist bisher aber aus Performancegründen auch ganz OK+sinnvoll.
sorry für den doofen Titel, wusste es nicht besser auszudrücken

Ich habe eine Tabelle mit u.a. drei (im einfachen Fall, könnten auch mehr sein) Spalten "c1", "c2" und "c3" (int), die alle so eine Art Tag oder Kategorie repräsentieren. Eine Zeile hat also immer bis zu drei (gleichwertige) Kategorien.
Nun habe ich so ein Tripel (z.B. $v1, $v2, $v3) gegeben und möchte mit einer möglichst übersichtlichen MySQL-Anfrage alle items haben, bei denen mindestens zwei der drei Kategorien übereinstimmen.
Die naheliegendste und stupide Lösung wäre ja, alle möglichen Kombinationen durchzutesten, aber die resultierende Anfrage wäre wohl eine ganze DinA4-Seite lang

Kann ich in MySQL wenigstens testen, ob ein Elementwert in einer Menge liegt?
Also sowas wie
Code:
WHERE
( (c1 IN [$v1, $v2, $v3]) AND (c2 IN [$v1, $v2, $v3]) ) OR
( (c2 IN [$v1, $v2, $v3]) AND (c3 IN [$v1, $v2, $v3]) ) OR
( (c1 IN [$v1, $v2, $v3]) AND (c3 IN [$v1, $v2, $v3]) )
Weiß leider nicht, nach was ich suchen muss resp. wie das heißt ...
lg,dk
Edit/PS: Keine Kommentare zur bestehenden DB-Struktur, ist nicht mein Projekt, lässt sich nicht ändern und ist bisher aber aus Performancegründen auch ganz OK+sinnvoll.