---
title: "resultat beroende på gruppering"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/165541-resultat-beroende-på-gruppering"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "cok"
published: "2007-10-16T11:21:37.000Z"
updated: "2007-10-23T14:18:05.000Z"
replies: 9
views: 661
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/165541-resultat-beroende-på-gruppering"
---

# resultat beroende på gruppering

## #1 — cok, 2007-10-16T11:21Z

Hej,

Jag har följande tabeller:

QuestionCondition:
fkey_Condition \| fkey_Question \| Pkey_GroupID
0  \|  5  \| 4
2  \| 15 \| 0
1  \| 15 \| 0

Condition:
pkey_ConditionID \| ConditionName
0 \| BAS
1 \| BASADVANCED
2 \| MOVABLE

En Question kan ha godtyckligt många conditions och dessa kopplas till en grupp. Gruppen ska användas för att få ut vilka Question som ska visas. Så om jag ställer frågan med MOVABLE och BAS, så ska jag få ut fkey_Question (15, 5). 

GruppId:et är till för att man endast behöver ha en (t ex MOVABLE) per grupp.

Tankarna går ihop här och nu, hur ställer jag frågan?

r: kör mssql, vet inte om det är mssql 2005 men 2000 ivf.

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

## #2 — Peter S, 2007-10-16T16:36Z

Jag förstår inte. Du har alltså ett antal conditionnycklar utifrån vilka du vill hämta relaterade questions? För att få fkey_question(15, 5) behöver du väl bara

```
select fkey_question from questioncondition where fkey_condition in (0, 2)
```

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

## #3 — LarsG, 2007-10-16T16:41Z

```
select fkey_question 
  from questioncondition 
where fkey_condition in 
  (select pkey_conditionID
     from Condition
    where conditionName in ('BAS','MOVABLE'))
```

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

## #4 — LarsG, 2007-10-16T16:43Z

```
select fkey_question 
  from questioncondition 
where fkey_condition in 
  (select pkey_conditionID
     from Condition
    where conditionName in ('BAS','MOVABLE'))
```

Jag förstår dock inte hur grupperna kommer in i det hela.

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

## #5 — cok, 2007-10-16T18:41Z

> **LarsG skrev:**
>
> ```
> select fkey_question 
>   from questioncondition 
> where fkey_condition in 
>   (select pkey_conditionID
>      from Condition
>     where conditionName in ('BAS','MOVABLE'))
> ```
>
> 
> 
> Jag förstår dock inte hur grupperna kommer in i det hela.

Jo, säg att det finns Päron, Äpple och Bilar som är av samma grupp. Det ska då räcka att jag har en av dessa tre för att QuestionID ska returneras.

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

## #6 — cok, 2007-10-17T08:47Z

Ingen som förstår vad jag menar?

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

## #7 — cok, 2007-10-17T16:59Z

Okej, vi tänker om lite...

Säg att vi har

**dbQuestion**   
QuestionId \| bla \| bla
1 \| bla \| bla
2 \| bla \| bla

**dbQuestionGroup**   
fkey_GroupId \| fkey_QuestionID
100 \| 1 
101 \| 1 
101 \| 2 

**dbGroupCondition**  
fkey_GroupId \| fkey_ConditionId
100 \| 0
101 \| 2
101 \| 3

**dbCondition**  
pkey_ConditionId \| ConditionName
0 \| 'Bil'
1 \| 'Båt'
2 \| 'Bike'
3 \| ' Moppe'

Redigerat:
Säg att jag har Bil och Bike, då vill jag få ut både QuestionId 1, 2. Det ska alltså räcka att jag har en Condition per grup så länge jag har MINST en i varje grupp som är knuten till en Question. Blir det något klarar nu?   :stud

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

## #8 — Peter S, 2007-10-17T16:59Z

I alla fall jag förstår inte. På vilket sätt fungerar inte Lars förslag? Kan du ge ett exempel på när det inte fungerar?

**Red./** Tajming var det...

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

## #9 — cok, 2007-10-17T17:26Z

Nja, Lars förslag tar inte hänsyn till gruppen. Om vi har en question som har tre grupper knytna till sig:

Grupp1 : innehåller Bil, båt, hus
Grupp2 : innehåller Bil, träd, 
Grupp3 : innehåller båt, hus, träd

Säg att jag då har Bil, då ska jag inte få träff på denna Question då jag inte har något av objekten i grupp3. Säg att jag även har hus. Då ska jag få träff för då har jag MINST ett objekt i varje grupp.

Nu tror jag jag var lite bättre på att förklara :)

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

## #10 — cok, 2007-10-23T14:18Z

Ok, sakta men säkert...
Har följande sql som tar ut alla gruppid som jag är behörig till

```
select distinct Pkey_GroupId 
from GroupCondition gc
join Condition con on con.pkey_ConditionID = gc.fkey_ConditionId
where fkey_ConditionId in (
	select pkey_ConditionID 
	from Condition
	where ConditionName in ('BIL', 'BÅT'))
```

Detta resultatet vill jag köra mot dbQuestionGroup (se ovan i tidigare inlägg). För att fkey_QuestionID ska returneras så måste frågan ha som mest exakt de gruppid som returneras från ovan select. Alltså om frågan returnerar gruppid (100 och 101) så ska både QuestionID 1 och 2 returneras. 

Om ovan fråga endast returnerar 101 ska endast QuestionID 2 returneras. Hoppas någon förstår vad jag menar :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/165541-resultat-beroende-på-gruppering
