---
title: "Betygssnitt och produktinformation i samma hämtning"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/99905-betygssnitt-och-produktinformation-i-samma-hämtning"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Grillcliff"
published: "2004-03-20T18:52:24.000Z"
updated: "2004-04-06T19:10:20.000Z"
replies: 11
views: 629
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/99905-betygssnitt-och-produktinformation-i-samma-hämtning"
---

# Betygssnitt och produktinformation i samma hämtning

## #1 — Grillcliff, 2004-03-20T18:52Z

Hej,

Går detta att klumpa ihop på något vis i en SQL-sträng.

Tabellen "product_ratings" innehåller:
"PID" (samma som products.id) och "rating" (int)

Önskat resultat: Ta ut all information från tabellen products för ID = Request.QueryString("ID"), hämta alla rader i "product_ratings" som har PID = Request.QueryString("ID"), räkna ihop resultatet med sum() och dela med antalet rader.

Förenklat, få ut snittbetyg och all produktinformation i en SQL-sträng :)

Mvh,

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

## #2 — LarsG, 2004-03-20T18:58Z

```
select p.id, p.name, avg(cast(pr.rating as decimal(10,2))) as rate
from products p join product_ratings pr
on p.id = pr.pid 
group by p.id,p.name
```

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

## #3 — Grillcliff, 2004-03-20T19:06Z

Tack för mycket snabbt svar!

Syntax error (missing operator) in query expression 'avg(cast(pr.ratings as decimal(10,2)))'.

Jag testade att på egen hand sätta in QueryStringen i strängen, men får det inte att funka. Funkar funktionerna du använder dig av i Access, vilket jag använder mig av just nu? Borde kanske ha nämnt det.

```
strSQL = "select p.id, p.name, avg(cast(pr.ratings as decimal(10,2))) as rate from products p WHERE p.id = " & Request.QueryString("id") & " join product_ratings pr on p.id = pr.pid group by p.id,p.name"
```

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

## #4 — LarsG, 2004-03-20T19:11Z

Jaha du använder Access du.

```
select p.id, p.name, avg(pr.rating + 0.0) as rate
from products p inner join product_ratings pr
on p.id = pr.pid 
group by p.id,p.name
```

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

## #5 — Grillcliff, 2004-03-20T19:20Z

Jajamen, det funkade kalas. Två problem kvarstår / uppkom dock ;)

Jag vill ha ut p.price och p.description, men tar jag med det i strängen klagar den på att jag vill executa en sträng med fält som inte är med i bla bla bla nånting, att fälten jag vill hämta är "onödiga".

Därtill måste Request.QueryString("ID") in någonstans. Nu plockar den samtliga betyg i tabellen, men den skall bara plocka betyg med product_ratings.PID = Request.QueryString("ID"). Resultatet presenteras på ex. default.asp?id=5.

Gick det att tyda? ;)

Edit: You tried to execute a query that does not include the specified expression 'price' as part of an aggregate function
**Löstes(?) genom "GROUP BY p.id, p.product, p.price, p.description"** \- det blir inte segt då?

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

## #6 — LarsG, 2004-03-20T19:33Z

Om du lägger till flera kolumner i select-listan så måste de också vara med i group by.

```
sql = "select p.id, p.name, p.price, p.description, " & _
" avg(pr.rating + 0.0) as rate " & _ 
" from products p inner join product_ratings pr " &
" where p.id = " & request.querystring("ID")  & _
" on p.id = pr.pid " & _
" group by p.id,p.name,p.price, p.description "
```

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

## #7 — Grillcliff, 2004-03-20T19:49Z

Hoppas du förstår att jag uppskattar din hjälp, även om det inte vill sig riktigt :/

Nu kopierade jag in ditt ovanstående inlägg rakt av, så när som på att "name" byttes mot "product" samt att jag la dit ett "\_" där jag antar att det saknas i ditt exempel.

```
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & path2database 
Set RecSet = Server.CreateObject("ADODB.Recordset")

strsql = "select p.id, p.product, p.price, p.description, " & _
" avg(pr.rating + 0.0) as rate " & _ 
" from products p inner join product_ratings pr " &
" where p.id = " & request.querystring("ID")  & _
" on p.id = pr.pid " & _
" group by p.id,p.product,p.price, p.description "

RecSet.Open strSQL, Connect, 1, 3
```

Jag får:

Error Type:
Syntax error in FROM clause.

:)

Edit: Ett byte till 

```
" where p.id = '1' & _
```

 ger Unterminated string constant.

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

## #8 — LarsG, 2004-03-20T19:57Z

Det kom lite i fel ordning

```
strsql = "select p.id, p.product, p.price, p.description, " & _
" avg(pr.rating + 0.0) as rate " & _ 
" from products p inner join product_ratings pr " & _
" on p.id = pr.pid " & _
" where p.id = " & request.querystring("ID")  & _
" group by p.id,p.product,p.price, p.description "
```

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

## #9 — Grillcliff, 2004-03-20T20:04Z

Så tokigt :) Det funkar dock kalasbra nu... nästan  :birp 

Vågar jag mig på ännu en fråga?  ;) 

Problemet är att om det inte finns några röster på en product plockar den inte ut något alls, inte pris, produktnamn, beskrivning eller något. Bästa hade givetvis varit att den i så fall sa ifrån att produkten inte har några röster (och sätter rate till 0.0) och att man får ut all annan information som vanligt.

Du skall ha en stor eloge för att du orkar med alla jobbiga problem, jag har snokat en del i forumet innan :)

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

## #10 — LarsG, 2004-03-20T20:10Z

```
strsql = "select p.id, p.product, p.price, p.description, " & _
" avg(iif(pr.rating is null,0,pr.rating) + 0.0) as rate " & _ 
" from products p left outer join product_ratings pr " & _
" on p.id = pr.pid " & _
" where p.id = " & request.querystring("ID")  & _
" group by p.id,p.product,p.price, p.description "
```

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

## #11 — Grillcliff, 2004-03-20T20:19Z

Nu blev jag glad, tack så mycket och ha en fortsatt trevlig kväll!

Resultatet kan skådas här: [Produkt med betyg](http://grillcliff4.dyndns.org/wwwebshop/demobutik/default.asp?id=4), [Produkt utan betyg](http://grillcliff4.dyndns.org/wwwebshop/demobutik/default.asp?id=2). Det är enbart dummyprodukter, är tänkt att bli ett e-handelssystem.

Over and out  :)

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

## #12 — Grillcliff, 2004-04-06T19:10Z

En liten följdfråga.

Den skriver bara ut 255 tecken av produktbeskrivningen, även då fältet i databasen är av typen PM och innehåller betydligt mycket mer information. Kan man lösa detta på något smidigt sätt?

[Exempel](http://grillcliff4.dyndns.org/wwwebshop/demobutik/default.asp?id=5)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/99905-betygssnitt-och-produktinformation-i-samma-hämtning
