|
|
Up |
|
|
  |
Author: N9N9 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 |
|
  |
Author: Troels ArvinTroels 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 |
|
  |
Author: N9N9 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 |
|
  |
Author: Thorbjørn Ravn AndersenThorbjø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 |
|
  |
|
|
  |
Author: Troels ArvinTroels 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 |
|
|