# MySql Abfrage mit mehreren Werten in einer Spalte - geht das ?



## daft075 (17. November 2011)

das schaut dann ca. so aus, ...

| ID | f_id |
| 01  | 100  |
| 01  | 200  |
| 01  | 300  |
| 02  | 100  |
| 02  | 300  |
| 03  | 200  |
| 03  | 300  |
    .      .
    .      .


jetzt will ich nur diejenige ID's die f_id 100 *und* gleichzeitig f_id 200 haben

wenn ich UND Operator benutze, dann bekomme ich nur einen Fehler.
Operator ODER funktioniert ganz normal, bringt mir aber nichts

Danke für jede Hilfe ...


----------



## ComFreek (17. November 2011)

Hallo,

wieso hast du mehrere gleiche ID's in deiner Tabelle?


> jetzt will ich nur diejenige ID's die f_id 100 und gleichzeitig f_id 200 haben


Sorry, aber wie soll das gehen, wenn du nur eine Spalte f_id pro Datensatz hast?


----------



## daft075 (17. November 2011)

Hi ComFreak.

Das ist eine Kreuztabelle, deswegen  habe ich mehrere ID's. 
Es sind sowohl in der Linke, als auch in der Rechten Spalte fremd ID's die von anderen Tabellen kommen.
Eine ist für Produkte, und die andere für Kategorien.
Jedes Produkt hat mehrere Kategorien, und es soll so gefiltert werden das man nur die Produkte sieht die gleichzeitig bestimmte Kategorien beinhalten.   

Ich war mir sicher das auf diese Art und weise nicht geht, aber da ich kein Experte bin, dachte ich mir, fragst mal im Forum nach. 

Trotz dem stellt sich die Frage, was muss ich tun damit das aber funktioniert.


----------



## Yaslaw (17. November 2011)

So auf die schnelle geraten

```
SELECT
	id
FROM
	mytable
WHERE
	GROUP_CONCAT(f_id ORDER BY f_id DESC SEPARATOR ',') = '100,200'
GROUP BY id
```

Es gibt sicher auch noch performantere Möglichkeiten.

ggf auch so

```
SELECT
	id
FROM
	mytable
WHERE
	f_id IN (100, 200)
GROUP BY
	id
HAVING
	COUNT(*) = 2
```


----------

