---
title: "Jämföra flera fält"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/76835-jämföra-flera-fält"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "reka1"
published: "2003-05-13T19:27:56.000Z"
updated: "2003-05-13T19:52:20.000Z"
replies: 8
views: 216
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/76835-jämföra-flera-fält"
---

# Jämföra flera fält

## #1 — reka1, 2003-05-13T19:27Z

Har lite problem med en sql-sats till ett bokningssystem. 

sql = ("select \* from bokningsinfo where starttid \>= #" & starttid & "# and starttid \<= #" & sluttid & "# or sluttid \>= #" & starttid & "# and sluttid \<= #" & sluttid &"# AND lokal = 'abc' AND bokdatum = #2003-12-12#")

Delen med start- & sluttider är ok. Det är delen med lokal, boknr och bokdatum som inte är helt 100, antar jag.

Om tex. lokalen abc med dess boknr är upptagen den 12/12-2003 kl 19:00 - 20:00 så generas en rapport att den redan är bokad. 

Ändrar man datumet eller lokalen till något värde som är ledigt  (te.x 2003-12-13. abd, etc), men bibehåller samma tidpunkter ges ändå "upptagetmeddelandet" trots att lokalen egentligen är ledig.

Oerhört tacksam för hjälp!

(Access används som databas)

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

## #2 — @nders, 2003-05-13T19:32Z

Du måste se till att gruppera dina villkor med parenteser om du har både and och or som villkor. And binder hårdast.

```
sql = ("select * from bokningsinfo where ((starttid >= #" & starttid & "# and starttid <= #" & sluttid & "#) or (sluttid >= #" & starttid & "# and sluttid <= #" & sluttid &"#)) AND lokal = 'abc' AND bokdatum = #2003-12-12#")
```

Det är i alla fall så jag tolkar att du vill ha villkoren.

Mvh,

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

## #3 — reka1, 2003-05-13T19:41Z

Tack för tips, men dessvärre så funkade det inte som jag ville.
Nu blev resultatet att det går att dubbelboka, dvs det är möjligt att boka kl 19:00 2 ggr samma dag.

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

## #4 — @nders, 2003-05-13T19:42Z

SQL-frågan ska alltså returnera något om det är upptaget och inte tillgängligt för bokning?

\*tänker igen\*

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

## #5 — @nders, 2003-05-13T19:44Z

Hmm, om den delen med start- och sluttider fungerar för sig, då borde det väl fungera att bara sätta en parentes runt den delen?

```
sql = ("select * from bokningsinfo where (starttid >= #" & starttid & "# and starttid <= #" & sluttid & "# or sluttid >= #" & starttid & "# and sluttid <= #" & sluttid &"#) AND lokal = 'abc' AND bokdatum = #2003-12-12#")
```

(under förutsättning att fältet bokdatum inte lagrar mer än själva datumet.)

Mvh

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

## #6 — reka1, 2003-05-13T19:45Z

Japp, sql-frågan fungerar ihop med en loop. Ifall ingen träff uppstår och sista posten nås så är alltså lokalen ledig, ifall det blir en träff på de inmatade fälten så är då lokalen redan upptagen.

Har redan provat att ändra paranteserna efter ditt förslag men det blir samma resultat - dubbelbokning.

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

## #7 — @nders, 2003-05-13T19:48Z

Starttid och sluttid, är det enbart tidvärden? bokdatum i tabellen, är det enbart ett datumvärde?

Hur ser den färdiga SQL-frågan ut?

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

## #8 — reka1, 2003-05-13T19:49Z

Nej, vänta förresten. Nu fungerar visst ditt förslag :)
Massor med tack för bra och snabb hjälp, @anders

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

## #9 — @nders, 2003-05-13T19:52Z

Jippi! Kul att det löste sig! :)

Hä' bar' å tack, å bju' igen.

Mvh,

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/76835-jämföra-flera-fält
