---
title: "SQL-strul i VB"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/21662-sql-strul-i-vb"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Insider"
published: "2001-10-08T14:39:00.000Z"
updated: "2001-10-09T10:53:00.000Z"
replies: 5
views: 145
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/21662-sql-strul-i-vb"
---

# SQL-strul i VB

## #1 — Insider, 2001-10-08T14:39Z

Har lite problem med en SQL-sats...

I tabellen person finns det dubletter av id. Men för dessa dubletter finns bara ett namn. Så om det finns tre av id 999, så finns det tre namn.
Om man söker på dessa tre namn så ska detta id komma "upp". (999)
Men om man söker på två av namnen så ska INTE 999 komma med i selekteringen.

I tabellen map finns inga dubletter av id. Där ska i det här fallet id 999 selekteras.

Jag har testat med ett par satser, men de funkar inte...

Nedanstående innehåller en sträng; SQL2 som innehåller namn, separerade med OR. "Tom OR Bill OR Sam", eller helt enkelt "Tom" om bara ett namn är valt.

```
sql = "Select xkoord, ykoord from map where map.id in (select id from person where namn ='" & SQL2 & "')"
```

Nedanstående innehåller oxå SQL2 fast nu ser den ut så här: "'Tom' , 'Bill' , 'Sam'"

```
sql = "Select xkoord, ykoord from map where map.id in (select id from person where namn IN (" & SQL2 & "))"
```

Nån som förstår???

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

## #2 — @nders, 2001-10-08T14:53Z

Vad menar du med fungerar inte?
Felmeddelande?

SQL-fråga nummer 2 känner jag igen, ;), och den bör fungera.

Mvh,

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

## #3 — @nders, 2001-10-08T15:02Z

Nu har jag läst om tråden i VB-forumet, och denna, och inser att jag inte alls förstår vad du vill ha ut för resultat.

Är det så att du vill ha AND-villkor mellan namnen, eller vad?

Jag är helt förlorad (som vanligt, då. ;) )

Mvh,

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

## #4 — Insider, 2001-10-09T09:45Z

Så här ska programmet funka:

Man ska kunna söka på ett eller flera namn. När man gör så ska det visas på en karta var det finns personer som heter så. (hus)

Om man söker på flera personer så ska bara de hus där dessa personer bor visas. Alltså Söker man på 'Tom' och 'Bill' så ska bara de hus visas det det både bor en Tom och en Bill. Alltså betydligt färre hus än om man bara söker på 'Tom'.

I tabellen personer listas ALLA personer som bor i ALLA husen. Alltså dubletter av namn. (fins bara 4 olika namn typ, men ett par tusen hus)
Varje hus har ett Id.

I tabellen map finns inga dubletter av Id. Från denna tabell hämtas koordinater för huset.

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

## #5 — @nders, 2001-10-09T10:28Z

Ok, i så fall skall du inte använda IN().

Den kommaseparerade lista som skickas antas ha OR mellan alla värden.

För att det skall bli som du vill måste din SQL-fråga byggas upp dynamiskt i ditt VB-program, och resultera i något sånt här:

```
sql = "Select xkoord, ykoord from map where map.id in (select id from person where namn ='Tom') and map.id in (select id from person where namn ='Bill') AND map.id in (select id from person where namn ='Sam')"
```

Det finns säkerligen enklare och bättre sätt att lösa det på, men detta är det enda fungerande sättet jag kan komma på för tillfället.

Mvh,

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

## #6 — Insider, 2001-10-09T10:53Z

Tack! Det funkar.
Helt suveränt!!!
:)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/21662-sql-strul-i-vb
