---
title: "SQL-fråga"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/68670-sql-fråga"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Kristianstad"
published: "2003-02-18T19:00:33.000Z"
updated: "2003-03-01T23:13:19.000Z"
replies: 29
views: 610
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/databaser-sql/68670-sql-fråga"
---

# SQL-fråga

_Sida 1 av 2._

## #1 — Kristianstad, 2003-02-18T19:00Z

I tabellen *Filmer* finns bland annat:
**\| ID \| Titel \|**
\| 1 \| Sagan om Ringen \|
\| 2 \| Sagan om de två Tornen \|
\| 3 \| Djungelboken \|

I tabellen *Betyg* finns bland annat:
**\| FilmID \| Användarnamn \| Betyg \|**
\| 1 \| Medlem1 \| 4,9 \|
\| 1 \| Medlem2 \| 3,5 \|
\| 1 \| Medlem3 \| 3,8 \|
\| 3 \| Medlem1 \| 2,3 \|

Jag vill kunna göra lite grejer med dessa data. Jag skall bland annat lista upp samtliga filmer med de med flest betyg högst upp.

```
SELECT * FROM Filmer ORDER BY vadå? DESC
```

Den skall alltså lista upp så det i mitt exempel skulle blivit:
\-------------------------------
Sagan om Ringen - 4,1 (3)
Djungelboken - 2,3 (1)
Sagan om de två tornen - 
\--------------------------------

Hur skall jag koda?

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

## #2 — LarsG, 2003-02-18T19:04Z

```
select titel,(select count(*) 
   from betyg where filmid = f.id) as votes
  from filmer as f
 order by votes desc
```

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

## #3 — Kristianstad, 2003-02-18T19:06Z

Tack Lasse! 4 minuter :o 
Hur gör jag sedan för att få ut antalet och betyget?
Alltså RS("vadå?")

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

## #4 — LarsG, 2003-02-18T19:11Z

```
rs("votes")
```

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

## #5 — Kristianstad, 2003-02-18T19:31Z

> \[TCX\]\[MyODBC\]Du har något fel i din syntax nära 'select count(\*) from betyg where filmid = f.id) as votes from fi' på rad 1

Hmm...varför?

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

## #6 — LarsG, 2003-02-18T20:03Z

Åh mysql,  inte så duktig på SQL.

```
select titel, count(b.betyg) as votes
   from filmer as f left join betyg b 
       on f.id = b.filmid
   group by titel
 order by votes desc
```

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

## #7 — Kristianstad, 2003-02-18T20:19Z

Du är verkligen en ängel Lasse!
Jag har bara en liten fråga kvar:

Jag kör ASP.
Denna kod fungerar utmärkt på IIS (på webbhotellet). Men då jag kör denna kod på PWS (min egna dator) händer ingenting.
Varför? Finns det något att göra åt detta?

Tack än en gång!

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

## #8 — LarsG, 2003-02-18T20:40Z

Jag säger bara en sak, ange

option = 16384

i din connectionsträng.

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

## #9 — Kristianstad, 2003-02-18T20:43Z

Milde makter! Uppsalabor gör skäl för sitt rykte - att de är smarta.

Hur kommer det sig att man måste lägga på option i connectionsträngen? Tänk att det var så lätt.
Tack tack!

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

## #10 — Kristianstad, 2003-02-18T21:03Z

Det var hemskt va jag var frågosam idag. Skäms lite.  :stud 

Var skall jag lägga till WHERE i SQL-frågan?

```
select titel, count(b.betyg) as votes from filmer as f left join betyg on f.id = b.filmid group by titel order by votes desc
```

Jag vill lägga till where i filmer-tabellen. Och det fungerar inte med:

```
select titel, count(b.betyg) as votes from filmer where status='ok' as f left join betyg on f.id = b.filmid group by titel order by votes desc
```

Hmm...

 :bire

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

## #11 — LarsG, 2003-02-18T21:36Z

```
select titel, count(b.betyg) as votes from filmer as f left join betyg on f.id = b.filmid where status='ok' group by titel order by votes desc
```

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

## #12 — Kristianstad, 2003-02-18T21:42Z

> Microsoft OLE DB Provider for ODBC Drivers error '80004005' 
> 
> \[TCX\]\[MyODBC\]Kolumn: 'status' i where clause är inte unik

Ack, ack, ack. ;)
Stackars Lars...

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

## #13 — LarsG, 2003-02-18T21:47Z

Eftersom du, uppenbarligen, har status i båda tabellerna så måste du ange vilken du avser.

```

select titel, count(b.betyg) as votes 
from filmer as f left join betyg on f.id = b.filmid 
where [b]f.[/b]status='ok' 
group by titel 
order by votes desc
```

t.ex.

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

## #14 — Kristianstad, 2003-02-18T21:49Z

Tack, tack! :)

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

## #15 — Kristianstad, 2003-02-19T19:39Z

Du Lars!
En sak du glömte i SQL-frågan var att den inte skall räkna med de filmer som inte har ett enda betyg. :)
Hur fixar man det? Försökte skriva i något i WHERE, men det gick inte. Felaktig användning av SQL grupp function, m.m. kom upp :) 

Tack på förhand!

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

## #16 — LarsG, 2003-02-19T20:03Z

Något sådant krav har aldrig förekommit så vitt jag kan se.

Byt left join mot inner join.

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

## #17 — Kristianstad, 2003-02-26T19:28Z

Count till paging?

Hur skulle en count till paging-funktion kunna göras med hjälp utav denna kod jag har just nu?

Hur fungerar client-side cursor? Räcker det inte med sql-kod, utan måste jag lägga till komponenter och sådant på servern?

Tack på förhand!

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

## #18 — LarsG, 2003-02-27T11:43Z

Recordset i ASP håller reda på hur många poster det finns i en resultatmängd.  Det finns en egenskap som heter recordcount som innehåller antalet. För att det skall fungera med Mysql så verkar det som om man måste använda client-side cursors.

Det finn stöd för client-side cursor i ADO som det är. Innan open på ett recordset så har man följande kod

```
set rs = server.createobject("adodb.recordset")
set rs.cursorlocation = 3 'aduseclient
rs.open selectQuery
```

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

## #19 — Kristianstad, 2003-02-27T17:04Z

Hej Lars!
Tack så hjärtligt!
Hur gör jag sedan med SQL-frågan då jag har denna kod? Hur får jag alltså fram talet på alla poster?

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

## #20 — Kristianstad, 2003-02-28T17:42Z

Det är förmodligen jag som är okunnig och använder Din kod på felaktigt sätt. Jag är lite förvirrad och vet inte riktigt var och hur jag skall placera denna kod.
Jag testade följande:

```
' Connectsträng
' SQL-fråga (som ovan)
set rs = server.createobject("adodb.recordset")
set rs.cursorlocation = 3 'aduseclient
rs.open selectQuery
```

Det blev felmeddelande: Objekt krävs.: 'rs.cursorlocation'

Vad är det jag gör fel? Hur skall det vara? Hur får jag antalet poster till en variabel?

Tack på förhand! Din hjälp är ovärderlig!

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/68670-sql-fråga  
Nästa sida: https://www.webforum.nu/amne/databaser-sql/68670-sql-fråga/page2.md
