MySQL Verknüpfungstabelle Abfrage
quasi_modem
- datenbank
Guten Tag,
ich habe in etwa folgende Tabelle in MySQL:
+---------+------+
| stoffID | farbID
+---------+------+
| 1 | 2 |
| 1 | 8 |
| 2 | 2 |
| 2 | 9 |
| 3 | 2 |
| 3 | 10 |
| 4 | 2 |
| 4 | 7 |
| 5 | 6 |
| 6 | 12 |
| 6 | 14 |
| 6 | 2 |
| 6 | 15 |
| 6 | 8 |
| 7 | 12 |
| 7 | 14 |
| 7 | 1 |
| 7 | 2 |
| 7 | 8 |
+---------+------+
Nun möchte ich alle Stoffe mit der Farbe 2 und 8 herausfinden - also eine Abfrage, die die stoffID zurückliefert, die sowohl die farbID 1 als auch 8 zugewiesen haben. "WHERE farbID = 1 AND farbID = 8" ist natürlich Quatsch - aber wie gehts richtig?
Hoffe, es kann mir jemand helfen.
Danke vorab,
quasi_modem.
Moin,
Nun möchte ich alle Stoffe mit der Farbe 2 und 8 herausfinden - also eine Abfrage, die die stoffID zurückliefert, die sowohl die farbID 1 als auch 8 zugewiesen haben. "WHERE farbID = 1 AND farbID = 8" ist natürlich Quatsch - aber wie gehts richtig?
mit OR.
--Heinz
Moin,
mit OR.
--Heinz
Nein, leider nicht, dann bekomme ich ja alle Datensätze mit 8 ODER 2 als Stofffarbe... Ich möchte aber alle, die die Farbe in Kombination haben. Also dürfte nur stoffID 1, 6 und 7 als Ergebnis zurück kommen.
Andere Idee???
mysql> WHERE enID = 2 OR enID = 8;
+---------+------+
| stoffID | farbID|
+---------+------+
| 1 | 2 |
| 1 | 8 |
| 2 | 2 |
| 3 | 2 |
| 4 | 2 |
| 6 | 2 |
| 6 | 8 |
| 7 | 2 |
| 7 | 8 |
+---------+------+
9 rows in set (0.00 sec)
Hallo,
Nein, leider nicht, dann bekomme ich ja alle Datensätze mit 8 ODER 2 als Stofffarbe... Ich möchte aber alle, die die Farbe in Kombination haben. Also dürfte nur stoffID 1, 6 und 7 als Ergebnis zurück kommen.
Andere Idee???
nutze einen Selfjoin (geht immer) oder ein Subselect (MySQL 4.1).
Freundliche Grüße
Vinzenz
nutze einen Selfjoin
Freundliche Grüße
Vinzenz
Hab großartigsten Dank! Es funktioniert!
Hallo
+---------+------+
| stoffID | farbID
+---------+------+
| 1 | 2 |
| 1 | 8 |
| 7 | 14 |
| 7 | 1 |
| 7 | 2 |
| 7 | 8 |
+---------+------+
Nun möchte ich alle Stoffe mit der Farbe 2 und 8 herausfinden - also eine Abfrage, die die stoffID zurückliefert, die sowohl die farbID 1 als auch 8 zugewiesen haben. "WHERE farbID = 1 AND farbID = 8" ist natürlich Quatsch - aber wie gehts richtig?
OR, wie vom Gemeindediener empfohlen, ginge. Meiner Meinung nach ist IN die bessere Lösung.
Freundliche Grüße
Vinzenz
Nun möchte ich alle Stoffe mit der Farbe 2 und 8 herausfinden - also eine Abfrage, die die stoffID zurückliefert, die sowohl die farbID 1 als auch 8 zugewiesen haben. "WHERE farbID = 1 AND farbID = 8" ist natürlich Quatsch - aber wie gehts richtig?
Machs wie Vinnie vorschlaegt oder wage Dich mal an den Operator mit dem Namen OR.