---
title: "Alldeles för krångligt för mig... (Massa queries)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/115357-alldeles-för-krångligt-för-mig-massa-queries"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Kenchu"
published: "2004-11-07T15:14:09.000Z"
updated: "2004-11-08T22:54:15.000Z"
replies: 9
views: 446
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/115357-alldeles-för-krångligt-för-mig-massa-queries"
---

# Alldeles för krångligt för mig... (Massa queries)

## #1 — Kenchu, 2004-11-07T15:14Z

Jag har en databas som ser ut på följande sätt:

\=======
**Tabeller**
\=======

**alternative**
\===========
id \| question_id \| alternative

**answer**
\===========
id \| alternative_id

**form**
\===========
id \| form

**question**
\===========
id \| form_id \| question

Det här är ett slags polldatabas, där svaren läggs i answer och är relaterade till alternative, som i sin tur är relaterad till question, och question till form.

Alltså, för att göra det lite enklare, ger jag följande exempel:

**Formulär**
id = 1 - form = Formulär 1
id = 2 - form = Formulär 2

**Frågor**
id = 1 - form_id = 1 (Denna fråga hör till formulär 1) - question = Är månen blå?
id = 2 - form_id = 1 (Denna fråga hör till formulär 1) - question = Vilken är din favoritfärg?
id = 3 - form_id = 2 (Denna fråga hör till formulär 2) - question = Hur mycket väger solsystemet?

**Alternativ**
id = 1 - question_id = 1 (Detta alternativ hör till fråga 1) - alternative = Ja
id = 2 - question_id = 1 (Detta alternativ hör till fråga 1) - alternative = Nej
id = 3 - question_id = 2 (Detta alternativ hör till fråga 2) - alternative = Blå
id = 4 - question_id = 2 (Detta alternativ hör till fråga 2) - alternative = Grön
id = 5 - question_id = 3 (Detta alternativ hör till fråga 3) - alternative = \> 1kg
id = 6 - question_id = 3 (Detta alternativ hör till fråga 3) - alternative = \< 1kg

**Answer** (Det som användaren svarar läggs in här)
id = 1 - alternative_id = 2 (Den här användaren svarade Nej på fråga 1)
id = 2 - alternative_id = 3 (Den här användaren svarade Blå på fråga 2)

Osv....

Jag har en hemsida på <http://www.spelprojektet.tk/,> och en av funktionerna till den här sidan skulle vara att skriva ut all statistik för svaren. Detta har visat sig mycket mycket svårare än jag trodde.

Den statistik jag vill skriva ut är hur många procent av varje alternativ som svarats på varje fråga. Rent principiellt är det fruktansvärt enkelt -  svaren för varje alternativ delat med mängden av alla svar för just den frågan (dvs svar som har ett alternativ_id som finns under en viss question). Hur ska jag gå tillväga med det här?

Det enda jag lyckts göra hittils är detta:

SELECT alternative.question_id, count(alternative)
FROM alternative
INNER JOIN answer
ON alternative.id = answer.alternative_id
GROUP BY alternative
ORDER BY alternative.id

(Väljer hur många som svarat på varje alternativ, typ.)

Har ni några idéer?

/Kenchu

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

## #2 — LarsG, 2004-11-07T16:56Z

Den fråga som du har skrivit ser väldig konstig ut i mina öron. 

Normalt så grupperar man på de kolumner som inte ingår i någon aggregatfunktion. Sen så gör du order by på en kolumn som inte finns med i resultatet vilket blir väldigt obestämbart när man har group by. Om jag vore en databashanterare så skulle jag returnera flera semantiska fel för den frågan

```
select q.question,
       a.alternativ,
       100.0*cast(count(aw.id) as decimal(11,2))/
       (select count(*) 
          from answer
         where id = q.id) as percentage
  from question as q 
  join alternative as a on q.id = a.question_id
  left join answer as aw on aw.id = q.id and aw.alternative_id = a.id
group by q.question,
       a.alternativ
```

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

## #3 — Kenchu, 2004-11-07T17:29Z

Mycket möjligt, jag har inte fått någon utbildning i det här, så... 

Kanske borde ha nämnt att jag använder mysql. Den kod du gav fungerar iaf inte i phpmyadmin.

Ser fruktansvärt snygg ut iaf. O_o Säkert bara någon liten korrigering som saknas. :)

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

## #4 — K@llen, 2004-11-07T17:39Z

Använder du en mysql-version som är lägre än 4.1 fungerar inte subquerys, vilket LarsGs fråga innehåller.

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

## #5 — Kenchu, 2004-11-07T17:53Z

MySQL 4.0.21. :/

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

## #6 — Kenchu, 2004-11-07T18:02Z

Kan man inte lösa det på annat vis?

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

## #7 — Jesper T, 2004-11-07T18:53Z

Två sql-frågor kanske.

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

## #8 — Kenchu, 2004-11-07T19:11Z

Ja, kanske det. :) Hur skulle de se ut?

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

## #9 — Jesper T, 2004-11-07T19:17Z

r/Glöm det. :r

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

## #10 — Kenchu, 2004-11-08T22:54Z

Någon? :(

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/115357-alldeles-för-krångligt-för-mig-massa-queries
