dobbelt betingelser
  Home FAQ Contact Sign in
dk.edb.database only
 
Advanced search
POPULAR GROUPS

more...

dk.edb.database Profile…
 Up
dobbelt betingelser         


Author: N9
Date: Aug 21, 2008 03:39

Hej

Jeg har følgende tabel.

tabel1

ID content
1 Contnet1
2 Content2
3 Content3
..........

tabel2

ID ref emne
1 1 5
2 1 2
3 2 2
4 2 4

select t1.* from tabel1 as t1 inner join tabel2 as t2 on t1.id =
t2.ref
where t2.emne = 5 and t2.emne = 2

Overstående sætning returnere ikke noget værdi

den gøre det kun hvis spørg på 1 emne
Show full article (0.81Kb)
4 Comments
Re: dobbelt betingelser         


Author: Troels Arvin
Date: Aug 21, 2008 06:52

N9 wrote:
> Det jeg ville have er betingelse på "emne" skal opfylde begge "emne",
> altså emne = 2 og emne = 5
>
> Nogle ideer til at skrive den sql sætning

Det, som du er ude efter, er en form for relationel division. Så prøv at
google på "relational division".

SELECT ref,COUNT(*) FROM tabel2 WHERE emne IN (2,5) GROUP BY ref HAVING
COUNT(*)=2;

Nævnte sætning kan evt. kobles sammen med tabel1 på forskellig vis, hvis
du ønsker at koble informationerne sammen med tabel1's ID.

--
Troels
no comments
Re: dobbelt betingelser         


Author: N9
Date: Aug 22, 2008 05:06

> SELECT ref,COUNT(*) FROM tabel2 WHERE emne IN (2,5) GROUP BY ref HAVING
> COUNT(*)=2;

Hej Trols

Tak for svaret det er lige det jeg skal bruge.

Men jeg har en anden spørgsmål, håber du evt. kan genneskue den.

tabel2

ID ref emne
1 1 5
2 1 2
3 2 2
4 2 4
5 2 5
6 3 1

Overstående tabel, ville jeg gerne, at hvis jeg spørge på emne = 5, så
ville jeg gerne have alle de emne række som er tilknyttet til ref 1 og
2, da ref 1 og 2 indholder 5.
Så resultat bliver 2,4,5

Håber at du forstår.

På forhånd tak.
Show full article (0.70Kb)
no comments
Re: dobbelt betingelser         


Author: Thorbjørn Ravn Andersen
Date: Aug 22, 2008 09:15

N9 skrev den 22-08-2008 14:06:
> ID ref emne
> 1 1 5
> 2 1 2
> 3 2 2
> 4 2 4
> 5 2 5
> 6 3 1
>
> Overstående tabel, ville jeg gerne, at hvis jeg spørge på emne = 5, så
> ville jeg gerne have alle de emne række som er tilknyttet til ref 1 og
> 2, da ref 1 og 2 indholder 5.
> Så resultat bliver 2,4,5
>
> Håber at du forstår.

Kan du lave en forespørgsel hvor du spørger på emne = 5 og får ID
returneret herfor?

--
Thorbjørn Ravn Andersen "... plus... Tubular Bells!"
no comments
Re: dobbelt betingelser         


Author: Troels Arvin
Date: Aug 23, 2008 04:42

N9 wrote:
> Overstående tabel, ville jeg gerne, at hvis jeg spørge på emne = 5, så
> ville jeg gerne have alle de emne række som er tilknyttet til ref 1 og
> 2, da ref 1 og 2 indholder 5.
> Så resultat bliver 2,4,5

Forespørgslen kan udtrykkes vha. en sub-query- eller en self-join-
konstruktion. Personligt finder jeg sub-query konstruktionen mest læsbar.
Ud fra en performance-mæssig betydning burde det være lige meget hvilken
du vælger, idet dit DBMS' optimizer normalt vil udføre begge
konstruktioner på samme måde.

Sub-query-konstruktionen:

SELECT DISTINCT emne
FROM tabel2
WHERE ref IN
(
SELECT ref
FROM tabel2
WHERE emne=5
);
Show full article (1.04Kb)
no comments