---
title: "SQL-frågor..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/11505-sql-frågor"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Method"
published: "2001-09-03T09:08:00.000Z"
updated: "2001-09-07T09:56:00.000Z"
replies: 33
views: 416
page: 1
pages: 2
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/asp/11505-sql-frågor"
---

# SQL-frågor...

_Sida 1 av 2._

## #1 — Method, 2001-09-03T09:08Z

Jag e inte så bra på att optimera SQL-frågor så jag skulle gärna vilja ha lite hjälp med detta.

Jag skall ha ett par dropdownmenyer närmare bestämt 5 st som jag skulle behöva lite hjälp med att "utforma":

&#0124;Ålder&#0124;
där man kan välja från 20 och uppåt med 5 års intervaller t ex 20 -  25 år,
Hur skal denna dropdown ha för value för att få det?

&#0124;Utbildning&#0124;
Denna har jag redan löst

&#0124;Ansökningsdatum&#0124;
Där vill jag ha en sån dropdown som finns på webforum.
Visa inlägg från de senaste 2 dagarna osv.
Hur skal denna dropdown ha för value för att få det?

&#0124;Kontor&#0124;
Denna har jag redan löst

&#0124;Jobb&#0124;
Denna har jag redan löst
\-----------------------------------
Nu till själva SQL-frågan.

Jag vill gärna ha hjälp med att utforma en If-sats som tilllåter att alla olika alternativ kan väljas. här har jag en början på en If-sats:

```
if kontor= "" then
if jobb = "" then
SQL = "SELECT * FROM ansokan ORDER BY Efternamn ASC"
else
SQL = "SELECT * FROM ansokan where jobb = '" & jobb & "' ORDER BY Efternamn ASC"
end if
else
if jobb = "" then
SQL = "SELECT * FROM ansokan WHERE kontor = '" & kontor & "' ORDER BY Efternamn ASC"
else
SQL = "SELECT * FROM ansokan WHERE kontor = '" & kontor & "' AND jobb = '" & jobb & "' ORDER BY Efternamn ASC"
end if
end if
```

men den behöver byggas på lite mer med de andra alternativen.

Tack på förhand

Jonas

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

## #2 — LarsG, 2001-09-03T12:08Z

När det gäller SQL-frågorna så blir det enklast att bygga where-delen för sig

```
sql = "select * from ansokan "
where = ""
if  jobb <> "" then
    if where = "" then
       where = " where "
    else
       where = " and "
    end if
    where = " jobb = '" & jobb & "'"
end if

if  kontor <> "" then
    if where = "" then
       where = " where "
    else
       where = " and "
    end if
    where = " kontor = '" & kontor & "'"
end if
'med flera
sql = sql & where & " order by Efternamn"
```

(Man kan skriva delen som bygger upp where som en sub för att få enklare kod.

```
sub buildWhere(byref where,column,restr)
if where <> "" then
   where = " where "
else
   where = where & " and "
end if
where = where & column & "= '" & restr & "'" 
end sub
```

och sedan anropa den med

```
where = ""
call buildWhere where,"jobb",jobb
call buildWhere where,"kontor",kontor
'mfl
```

)

Jag återkommer om dropdown, måste jobba nu.

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

## #3 — LarsG, 2001-09-03T16:37Z

> &#0124;Ålder&#0124;
> där man kan välja från 20 och uppåt med 5 års intervaller t ex 20 - 25 år,
> Hur skal denna dropdown ha för value för att få det?

```
<select name="age">
<option value=" 0 and 5 ">0 till 5
<option value=" 5 and 10 ">6 till 10
..
</select>
```

på aspsidan

```
sql = "select * from t where age between " & request.form("age")
```

> &#0124;Ansökningsdatum&#0124;
> Där vill jag ha en sån dropdown som finns på webforum.
> Visa inlägg från de senaste 2 dagarna osv.
> Hur skal denna dropdown ha för value för att få det?

```
<SELECT NAME="SearchDate">
	<OPTION VALUE="-2">Sedan 2 dagar 
	<OPTION VALUE="-5">Sedan 5 dagar
...
</SELECT>
```

på asp-sidan

```
sql = "select * from t " &_
" where dateColumn >= " &_
" dateadd(""d""," & request.form("searchDate") & ",date)"
```

Denna lösning är  specifik för Access. Använder du någon annan DBMS så får vi väl lösa det då.

red: glömde ett citat.

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

## #4 — Method, 2001-09-05T06:50Z

Jag har inte sparat åldern utan har sparat födelsedatum t ex 1978-05-18

hur funkar det om man vill hämta ur med hjälp av den koden du gav mig LarsG ??

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

## #5 — LarsG, 2001-09-05T08:00Z

```
sql = "select * from t where datediff(""yyyy"",age,date) between " & request.form("age")
```

Fortfarande Access-specifikt.

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

## #6 — Method, 2001-09-05T08:14Z

Jga vet att jag kommer med en jobbig fråga nu ;) men jag måste få till detta och jag vet inte riktigt hur jag skall göra.

Jag vill ha så att man kan välja "fritt" ur dropdownerna, t ex väljer jag bara kontor och jobb så skall den bara söka på de kreterierna osv. hoppas du förstår hur jag menar.

är det detta den koden gör? 

```
sql = "select * from ansokan "
where = ""
if jobb <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = " jobb = '" & jobb & "'"
end if
if kontor <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = " kontor = '" & kontor & "'"
end if
'med flera
sql = sql & where & " order by Efternamn"
```

Om jag kunde få lite hjälp med detta hade jag varit hel glad ;)

Tack på förhand!

MVH

Jonas

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

## #7 — LarsG, 2001-09-05T08:17Z

Jo, det är tanken. Man lägger bara till villkor i select-satsen om det är något ifyllt i formuläret.

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

## #8 — Method, 2001-09-05T08:26Z

Inlägg raderat...
\[Redigerat av Method den 05 sep 2001\]

\[Redigerat av Method den 05 sep 2001\]

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

## #9 — Method, 2001-09-05T11:12Z

Är det så här koden skall se ut?

Kan nån hjälpa mig med detta, jag behöver verkligen hjälp ;)

```
sql = "select * from ansokan "
where = ""
if jobb <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = " jobb = '" & jobb & "'"
end if

if kontor <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = " kontor = '" & kontor & "'"
end if

if age <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = "datediff(""yyyy"",age,date between " & request.form("age")"
end if

if utb <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = " utbildning = '" & utb & "'"
end if

if SearchDate <> "" then
if where = "" then
where = " where "
else
where = " and "
end if
where = "dateColumn >= dateadd(""d""," & request.form("searchDate") & ",date)"
end if

sql = sql & where & " order by Efternamn"
```

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

## #10 — Method, 2001-09-05T13:02Z

Jag vet att jag böjar bli tjötig nu 

men kan nån vara så snäll och hjälpa mig med detta, jag vill gärna få igång denna funktion.

Tack på förhand!

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

## #11 — LarsG, 2001-09-05T13:54Z

Ursäkta, jag skrev lite fel i mitt tidigare inlägg.

```
sql = "select * from ansokan "
where = ""
if jobb <> "" then
if where = "" then
where = " where "
else
where = where & " and "
end if
where = where & " jobb = '" & jobb & "'"
end if
if kontor <> "" then
if where = "" then
where = " where "
else
where = where & " and "
end if
where = where & " kontor = '" & kontor & "'"
end if

if age <> "" then
if where = "" then
where = " where "
else
where = where & " and "
end if
where = where & "datediff(""yyyy"",age,date between " & request.form("age")"
end if

if utb <> "" then
if where = "" then
where = " where "
else
where = where & " and "
end if
where = where & " utbildning = '" & utb & "'"
end if

if SearchDate <> "" then
if where = "" then
where = " where "
else
where = where & " and "
end if
where = where & "dateColumn >= dateadd(""d""," & request.form("searchDate") & ",date)"
end if

sql = sql & where & " order by Efternamn"
```

Borde bli bättre så.

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

## #12 — Method, 2001-09-05T14:24Z

Hej Lars jag får denna fel

```
Microsoft VBScript compilation error '800a0401' 

Expected end of statement 

/int/test.asp, line 47 

where = where " and "
----------------^
```

med den nya koden du gav

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

## #13 — Pace, 2001-09-05T14:27Z

where = where **&** " and "

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

## #14 — LarsG, 2001-09-05T14:42Z

Jag hade missat ytterligare en & i mitt inlägg. Jag har redigerat det nu.

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

## #15 — Method, 2001-09-05T14:47Z

så här funkar det nu allt funkar utom när man blandar in ålders dropdownen då får jag följande fel

```
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'jobb = 'Luffare' and kontor = 'Linköping' and datediff([yyyy],age,date between 46 and 65 and utbildning = 'Högskoleingenjör' order by Efternamn'. 

/int/test.asp, line 74
```

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

## #16 — Method, 2001-09-05T14:51Z

Och detta felet får jag när jag väljer från searchDate dropdownen 

```

Microsoft OLE DB Provider for ODBC Drivers error '80040e10' 

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 3. 

/int/test.asp, line 74
```

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

## #17 — LarsG, 2001-09-05T15:11Z

Vi betar av mina fel.

```
where = "datediff(""yyyy"",age,date) between " & request.form("age")"
```

missade en parentes där.

Det andra felet är lite svårare. Det brukar bero på att man (jag) missar en ' eller liknade eller så är det en felstavning av ett kolumnnamn.

Kan du visa hela sql-satsen så är det lättare att se vad som är fel.

Dvs, precis efter det att du har byggt ihop strängen så kan du lägga till

```
response.write "sql: " & sql & "<br>"
```

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

## #18 — Method, 2001-09-06T07:07Z

Hej igen ;)

jag la in din kod men den vill inte funka

```
if age <> "" then
if where = "" then
where = " where "
else
where = where & " and "
end if
where = "datediff(""yyyy"",age,date) between " & request.form("age")'"
end if
```

jag får denna fel

```
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause. 

/int/test.asp, line 76
```

Här e några av fälten i databasen

&#0124;fod_datum&#0124; 
typ: Datum/tid 
där användaren sparar födelsedatum i formatet MM/DD/YYYY

&#0124;datum&#0124;
typ: Datum/tid
där sparas vilket datum och tid ansökan las upp i databasen
MM/DD/YYYY HH:MM:SS

hoppas att detta skall hjälpa något ;)

Tack på förhand!

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

## #19 — LarsG, 2001-09-06T07:31Z

```
where = where & "datediff(""yyyy"",fod_datum,date) between " & request.form("age")'"
```

så.

Om du får något fel är det enklast att felsöka om du visar hela sql-frågan.

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

## #20 — Method, 2001-09-06T07:43Z

Fel i inlägget, raderat inlägg

\[Redigerat av Method den 06 sep 2001\]

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/11505-sql-frågor  
Nästa sida: https://www.webforum.nu/amne/asp/11505-sql-frågor/page2.md
