---
title: "Hur göra bättre?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/84254-hur-göra-bättre"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "nisslass"
published: "2003-08-14T17:58:11.000Z"
updated: "2003-08-26T12:28:48.000Z"
replies: 11
views: 267
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/84254-hur-göra-bättre"
---

# Hur göra bättre?

## #1 — nisslass, 2003-08-14T17:58Z

Hej!

Hur gör jag denna kod smidigare/bättre?

```
SQL = "select count(*) as antalbokningar3 from Bokningar where Kung='1' AND Kollad='0'"
Set RS = Conn.Execute(SQL)
antalbokningar3 = rs("antalbokningar3")
rs.close

SQL = "select count(*) as antalbokningar4 from Bokningar where Kung='1' AND Kollad='1' AND Bokningsdatum > '" & DateAdd("d",-14,Now) & "'"
Set RS = Conn.Execute(SQL)
antalbokningar4 = rs("antalbokningar4")
rs.close

SQL = "select count(*) as antalbokningar5 from Bokningar where Kung='1' AND Kollad='2'"
Set RS = Conn.Execute(SQL)
antalbokningar5 = rs("antalbokningar5")
rs.close
```

Sidan forsätter till antalbokningar9... så det är mycket som måste räknas.. kan detta göras i en och samma sqlfråga?

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

## #2 — cyprys, 2003-08-14T18:11Z

Vilken DBMS?

Detta skulle dock kunna fungera.

```
SQL = "SELECT " & _
"(select count(*) from Bokningar where Kung='1' AND Kollad='0') AS AntalBok3, " & _
"(select count(*) from Bokningar where Kung='1' AND Kollad='1' AND Bokningsdatum > '" & DateAdd("d",-14,Now) & "') AS AntalBok4, " & _
"(select count(*) from Bokningar where Kung='1' AND Kollad='2') AS AntalBok5 " & _
" FROM Bokningar "
```

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

## #3 — nisslass, 2003-08-14T18:12Z

Oj, sorry... MySQL ;) Det där såg logiskt och fint ut.. ska testa...
Tack..

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

## #4 — cyprys, 2003-08-14T18:13Z

då måste du ha mySQL 4.1 då tidigare varianter inte tar subquerys

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

## #5 — nisslass, 2003-08-14T18:20Z

Verkar som mitt hotell kör 3.23.54-nt... hmm vad händer då?

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

## #6 — LarsG, 2003-08-14T18:20Z

```
select kollad,count(*)
  from bokningar
  where kollad in ('0','2') and kung = '1'
  group by kollad
union
 select '1',count(*)
  from bokningar
  where kollad = '1' and kung = '1'
```

Flyttas från ASP

Red, eftersom det är Mysql så finns det inte Union heller. Dela upp det i två frågor.

Cyprys:

Din fråga skulle returnera lika många rader som det finns i tabellen.

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

## #7 — nisslass, 2003-08-14T18:28Z

Nu fattade jag ingenting av ditt svar Lars..  :q

Koden dvs...
Hur hämtar jag det uträknade svaret och siffrorna gör vadå?

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

## #8 — LarsG, 2003-08-14T19:00Z

Om du utför en fråga som

```
set rs = connect.execute ( _
"select kollad,count(*) "
"  from bokningar "
"  where kollad in ('0','2') and kung = '1' "
"  group by kollad "
```

så kommer du att få en rad med två kolumner för varje olika värde på kollad.  Om du vill söka på fler värden än '0' och '2' så är det bara att lägga till dom i in-listan.

Eftersom du har olika where-villkor i dina frågor så måste du dela upp det i åtminstone två anrop.  Du beskriver ju inte exakt hur resten av frågorna ser ut så jag kan inte uttala mig mer exakt.

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

## #9 — nisslass, 2003-08-14T19:47Z

Exakt såhär ser det ut;

```
SQL = "select count(*) as antalbokningar from Bokningar Where Kollad <> '3'"
Set RS = Conn.Execute(SQL)
antalbokningar = rs("antalbokningar")
rs.close

SQL = "select count(*) as antalbokningar2 from Bokningar where Kung='1' AND Kollad <> '3'"
Set RS = Conn.Execute(SQL)
antalbokningar2 = rs("antalbokningar2")
rs.close

SQL = "select count(*) as antalbokningar3 from Bokningar where Kung='1' AND Kollad='0'"
Set RS = Conn.Execute(SQL)
antalbokningar3 = rs("antalbokningar3")
rs.close

SQL = "select count(*) as antalbokningar4 from Bokningar where Kung='1' AND Kollad='1' AND Bokningsdatum > '" & DateAdd("d",-14,Now) & "'"
Set RS = Conn.Execute(SQL)
antalbokningar4 = rs("antalbokningar4")
rs.close

SQL = "select count(*) as antalbokningar5 from Bokningar where Kung='1' AND Kollad='2'"
Set RS = Conn.Execute(SQL)
antalbokningar5 = rs("antalbokningar5")
rs.close

SQL = "select count(*) as antalbokningar6 from Bokningar where Kollad='3'"
Set RS = Conn.Execute(SQL)
antalbokningar6 = rs("antalbokningar6")
rs.close

SQL = "select count(*) as antalbokningar7 from Bokningar where Kung='1' AND Kollad='1' AND Bokningsdatum < '" & DateAdd("d",-14,Now) & "'"
Set RS = Conn.Execute(SQL)
antalbokningar7 = rs("antalbokningar7")
rs.close

SQL = "select count(*) as antalbokningar8 from Bokningar where Kung='1' AND Kollad='40'"
Set RS = Conn.Execute(SQL)
antalbokningar8 = rs("antalbokningar8")
rs.close

SQL = "select count(*) as antalbokningar9 from Bokningar where Kung='1' AND Kollad='40' AND paminnelseskickad < '" & DateAdd("d",-14,Now) & "'"
Set RS = Conn.Execute(SQL)
antalbokningar9 = rs("antalbokningar9")
rs.close

SQL = "select count(*) as antalbokningar10 from Bokningar where Kung='1' AND Kollad='50'"
Set RS = Conn.Execute(SQL)
antalbokningar10 = rs("antalbokningar10")
rs.close

SQL = "select count(*) as antalbokningar11 from Bokningar where Kung='1' AND sistamin='1' AND Kollad <> '3'"
Set RS = Conn.Execute(SQL)
antalbokningar11 = rs("antalbokningar11")
rs.close
```

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

## #10 — LarsG, 2003-08-16T18:54Z

Du kan slå ihop 4 av frågorna till

```
set rs = connect.execute ( _
"select kollad,count(*) "
"  from bokningar "
"  where kollad in ('0','2','40','50') and kung = '1' "
"  group by kollad " )
```

De övriga får du ta var för sig.

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

## #11 — ZeTa, 2003-08-16T20:40Z

Du kan använda : så att det bara blir en rad :P

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

## #12 — SteveP, 2003-08-26T12:28Z

Jo men det blir ju mindre överskådligt? Ser bättre ut med delade rader som LarsG gör.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/84254-hur-göra-bättre
