---
title: "WHERE IN (WHERE IN)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/170073-where-in-where-in"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "phred"
published: "2008-03-19T23:30:18.000Z"
updated: "2008-03-21T13:43:03.000Z"
replies: 5
views: 511
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/170073-where-in-where-in"
---

# WHERE IN (WHERE IN)

## #1 — phred, 2008-03-19T23:30Z

Hej har en sql som ser ut som följer:

```
SELECT aaa, bbb, ccc from tbl_xxx WHERE aaa IN (SELECT aaa FROM tbl_yyy WHERE rrr IN (?))

oCmd.Parameters.AddWithValue("?", qqq);
```

där qqq är en semikolonseparerad sträng ex. Värde1, Värde2, Värde3

Det fungerar fint om det vara är ett värde i qqq, blir det fler så ballar det ur.

Gör jag helt fel ?

MySQL är dataasen.

hör av er.
Tjabba

Permalänk: https://www.webforum.nu/p/170073

## #2 — Peter S, 2008-03-20T12:08Z

IN() vill ha kommaseparerade värden, så testa med att byta alla semikolon mot kommatecken.

Permalänk: https://www.webforum.nu/p/2092518

## #3 — phred, 2008-03-20T19:50Z

oj oj, klantigt värre. det jag menar är såklart kommaseparerad.

Mer info för att komma med någon bra idé.

tbl_sites
siteID INT, AUTOINC, PRIMARY
siteURL varchar

tbl_cat
catID INT, AUTOINC, PRIMARY
siteID INT
siteCat varchar
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
SELECT siteID, siteURL from tbl_sites WHERE siteID IN (SELECT siteID FROM tbl_cat WHERE siteCat IN (?)) LIMIT 1

Jag vill alltså hämta en post från tbl_sites där siteID finns i tabellen tbl_cat med någon av de valda kategorierna. I tbl_cat kan alltså ett siteID finnas med flera gånger med olika siteCat. 
de valda kategorierna är olika checkboxar som sätts ihop i en ArrayList som sedan konverteras till en kommaseparerad sträng.

Permalänk: https://www.webforum.nu/p/2092637

## #4 — LarsG, 2008-03-20T19:58Z

Det går inte att använda en parameter i detta fall. Du får expandera ut din lista eller använda en parameter per värde.

Permalänk: https://www.webforum.nu/p/2092640

## #5 — phred, 2008-03-20T20:33Z

Du tappade mig vid hej ;)

Tack för svar, men det där sa mig ingenting faktiskt. Det jag tror att jag förstod är att jag inte kan göra som jag tänkt, rätt ?

Permalänk: https://www.webforum.nu/p/2092650

## #6 — LarsG, 2008-03-21T13:43Z

Jo. 

Det jag menar med att expandera listan är att stoppa in värdena direkt i sql-satsen

```
q = "SELECT aaa, bbb, ccc from tbl_xxx WHERE aaa IN (SELECT aaa FROM tbl_yyy WHERE rrr IN (" & qqq & ")";
```

Du måste då hantera eventuella apostrofer kring varje värde om kolumnen rrr kräver det. Du måste också skydda mot sql-injections.

Alternativt kan du göra

```
q = "... where rrr in (?,?,?,?);
```

Antalet frågetecken motsvarar antalet värden i din lista och där du sedan hanterar varje värde som en parameter.

Permalänk: https://www.webforum.nu/p/2092770

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/170073-where-in-where-in
