---
title: "WHERE...IN -Problem!"
url: "https://www.typo3.net/d/21281-wherein-problem"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Frage"]
created: "2005-02-15"
last_reply: "2005-03-09"
replies: 9
solved: false
page: 1
pages: 1
lang: "de"
---

# WHERE...IN -Problem!

Extensions › Entwicklung · 9 Antworten · gestartet 2005-02-15

## Eröffnungsbeitrag

**osteiner** · 2005-02-15 · [Beitrag #1](https://www.typo3.net/d/21281-wherein-problem/1)

Hallo,

ich hänge gerade an einer SQL-Abfrage. Eigentlich nix großartiges, aber es geht nur fast...

Ich habe eine Abfrage:
SELECT * FROM tx_meins WHERE tx_meins.pid=44 AND 4 IN (category)

category ist ein BLOB einer Mehrfachauswahl im Backend mit dem Wert '3,4,8,11'

>>> Es wird kein Datensatz gefunden!

Ändere ich die Abfrage in:
SELECT * FROM tx_meins WHERE tx_meins.pid=44 AND 3 IN (category)

Dann wird ein Datensatz gefunden. Das funktioniert auch bei anderen Werten, solange im BLOB-Feld der erste Wert der Gesuchte ist.

tausche ich in der Abfrage category gegen eine Liste aus (3,4,8,11) spielt es keine Rolle an welcher Stelle der gesuchte Wert steht.

Was hab ich übersehen?

Vielen Dank
Oliver

## Antworten

### [#2](https://www.typo3.net/d/21281-wherein-problem/2) · Martoro · 2005-02-16

ich hätte gerade fast eine gleichlautenden frage gestellt :-))

allerdings funktioniert das bei mir auch nur mit zeichenketten und nicht mit echten datenbankfeldern.

ich benötige die funktion um userrechte in einer extension zu überrpüfen und möchte eigentlich ein statement alla

```sql
SELECT  * FROM  `tx_myext` WHERE 2 IN `tx_myext`.`allowed_groups`
```

ausführen ... ich hoffe dafür gibt es eine datenbanklösung ... die lösung per php wäre unelegant da ja erstmal auf verdacht alles aus der DB geholt werden müsste.

gruß Martin

### [#3](https://www.typo3.net/d/21281-wherein-problem/3) · Martoro · 2005-02-17

ich habe gerade mal den typo3 quelltext nach der verwendung von "subgroup" durchsucht. das wäre ja ein idealer kandidat für eine ähnliche abfrage ... leider wird dabei immer die liste per php mit explode und implode zerlegt und ausgewertet

eine lösung direkt per sql scheint also nicht allzu naheliegend zu sein ... falls du dennoch etwas findest bin ich ein dankbarer abnehmer

gruß Martin

### [#4](https://www.typo3.net/d/21281-wherein-problem/4) · osteiner · 2005-02-17

seltsam? Sind wir die einzigen, die "IN" verwenden (wollen), oder hat sonst keiner Probleme damit? Dann wäre es toll wenn uns diese Menschen doch mal einen Tip geben könnten was wir falsch machen.

Gruß
Oliver

### [#5](https://www.typo3.net/d/21281-wherein-problem/5) · Martoro · 2005-02-17

naja ich vermute das man in reinem mysql schon was machen könnte ... mit subselects oder ähnlichen nettigkeiten ... das würde aber vermutlich den dbal überfordern deshalb habe ich das auch nicht weiter verfolgt

ich suche mal ein mysql forum und frage da mal nach, gruß Martin

### [#6](https://www.typo3.net/d/21281-wherein-problem/6) · osteiner · 2005-02-17

irgendwie liegt es wohl an dem Datenbankfeld in der Klammer des IN

"...3 IN(dbfeld)..."

Weil: "... pid in ('.$conf['pidList']'.)..." funktioniert einwandfrei!

Oliver

### [#7](https://www.typo3.net/d/21281-wherein-problem/7) · Martoro · 2005-02-17

> pid in ('.$conf['pidList']'.)

läuft ja auch auf

```plaintext
WHERE 6 IN (1,2,3,4,5,6,7,8,9)
```

raus

zumindest aus sicht von mysql ...er wertet offenbar das blob nicht als liste aus

### [#8](https://www.typo3.net/d/21281-wherein-problem/8) · Martoro · 2005-02-17

```sql
SELECT  * 
FROM  `be_groups` 
WHERE FIND_IN_SET(3,`subgroup`) AND FIND_IN_SET(4,`subgroup`)
```

zumindest funkt das bei mir

### [#9](https://www.typo3.net/d/21281-wherein-problem/9) · osteiner · 2005-02-17

super! Bei mir gehts auch.

Vielen Dank
Oliver

### [#10](https://www.typo3.net/d/21281-wherein-problem/10) · escapedPrisoner · 2005-03-09

> **osteiner schrieb:**
>
> Ich habe eine Abfrage:
> SELECT * FROM tx_meins WHERE tx_meins.pid=44 AND 4 IN (category)
> category ist ein BLOB einer Mehrfachauswahl im Backend mit dem Wert '3,4,8,11'
> >>> Es wird kein Datensatz gefunden!

Wenn jemand das in pure sql haben möchte muss man den blob-Datentyp in einen string casten. Man kann diesen workaround hernehmen:

anstatt category: **left(category, 200)**

Beim Wert 200 (=die stringlänge) muss man halt sicher gehen, dass die größtmögliche Liste nicht länger sein wird. Ansonsten halt 256 oder mehr einsetzen!

Greetz
Daniel

---

Quelle: „WHERE...IN -Problem!“, typo3.net, https://www.typo3.net/d/21281-wherein-problem
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
