Avatar billede ckrame Nybegynder
07. december 2002 - 02:33 Der er 4 kommentarer og
1 løsning

Join eller hvad det nu egentlig er

Jeg har en relationstabel, der repræsenterer en mange til mange relation.
Lad os sige at tabellen hedder dok_key og kunne f.eks. se således ud:
id - dokid - keyid
1    22      1
2    22      3
3    23      1
4    23      3
5    24      1

Der er altså en relation mellem dok 22 og key 1 og 3 - og en relation mellem dok 23 og key 1 og 3 samt en realtion mellem dok 24 og key 1, men ikke key 3.

Mit spørgsmål er så: Hvordan finder jeg med SQL netop de dok'er der er relateret til både key 1 og 3.
Altså dok 22 og 23, men ikke 24
Avatar billede erikjacobsen Ekspert
07. december 2002 - 07:50 #1
select dokid from dok_key where id in (1,3)

eller mener du

select * from dok_key,dokumenttabellen where dok_key.dokid=dokumenttabellen.id and  dok_key.id in (1,3)
Avatar billede ckrame Nybegynder
07. december 2002 - 11:32 #2
begge løsninger giver alle 5 rækker tilbage.

Jeg ville egentlig kun have de dokid'er med både key 1 og 3 ikke dem med kun den ene.
Avatar billede erikjacobsen Ekspert
07. december 2002 - 13:07 #3
select dokid,count(*) as antal from dok_key where key_id in(1,3) group by dokid having antal>=2

..utestet
Avatar billede ckrame Nybegynder
08. december 2002 - 22:39 #4
Det er vel egentlig et hack.
Men det virker efter hensigten.

tak skal du have - vil du ikke have point ?
Avatar billede erikjacobsen Ekspert
08. december 2002 - 22:49 #5
nej nej - ikke et hack. Sådan gør man det. Jeg skulle
bare lige forstå hvad du mente :)

ja ja - et point ekstra eller 2 ville da lune
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester