Avatar billede oasen Nybegynder
24. februar 2003 - 19:15 Der er 6 kommentarer og
1 løsning

Inner join

Dette er et udpluk fra et tidligere spørgsmål, som jeg var overbevist om virkede. Men jeg får konstant alle værdier af ID1 returneret.



Tabel 1:______________________Tabel 2
__ID1_____________________ID1_________ID2
___6_______________________7___________4
___3_______________________1___________2
___8_______________________3___________9
___2_______________________6___________4
___4_______________________3___________4

Select ID1 From Tabel1 Inner Join Tabel2 On Tabel1.ID1 <> Tabel2.ID1 Where Tabel2.ID2 = 4 Group By ID1

Her skal der så returneres 2, 4 og 8 fra Tabel 1.
Avatar billede mortrr Praktikant
24. februar 2003 - 19:44 #1
Jamen der vil jo også altid være en eller anden record fra tabel2 hvor tabel1.id1<>tabel2.id1

Hvilken database er det?

- Morten
Avatar billede oasen Nybegynder
24. februar 2003 - 19:51 #2
Men der burde der jo netop ikke være, da det kun er dem fra tabel 2, hvor ID2 = 4.
Det er MySQL.
Avatar billede eagleeye Praktikant
24. februar 2003 - 19:55 #3
Ja den SQL vil give en af hver ID1 fra tabel1.
Fra (Where Tabel2.ID2 = 4) får du (7,6,3) i tabel2.ID1

Så denne: Tabel1.ID1 <> Tabel2.ID1
Det giver en liste føsrt for ID1=7 (6,3,8,2,4)
Så en liste for ID1=6 (3,8,2,4)
Så en liste for ID1=3 (6,8,2,4)
ialt en tabel med dette i ID1 (6,3,8,2,4,3,8,2,4,6,8,2,4) Så Group på ID1 det giver (6,3,8,2,4)

Jeg er ikke med på hvad du vil havde ud?? En liste med tabel1.ID1 hvor tabel2.ID1 er forskellig fra tabel1.ID1?
Avatar billede oasen Nybegynder
24. februar 2003 - 20:35 #4
Det er meget simpelt - jeg vil blot have de poster fra Tabel 1, hvor ID1-nummeret ikke er det samme som ID1-nummeret i Tabel 2. Men ID1-nummeret i Tabel 2 må ikke forekomme i samme post som en given værdi af ID2.

Det svarer til, at jeg skriver:
Select ID1 From Tabel1 Where ID1 Not In (Select ID1 From Tabel 2 Where ID2 = 4)

Problemet er, at MySQL ikke understøtter selects her endnu. Kun en kommasepareret streng. Så jeg håber på et godt alternativ ;)
Avatar billede mortrr Praktikant
24. februar 2003 - 21:21 #5
Select ID1 From Tabel1 Left Join Tabel2 On Tabel1.ID1 = Tabel2.ID1 AND Tabel2.ID2 = 4 Where Tabel2.ID1 is null Group By ID1

- Morten
Avatar billede oasen Nybegynder
24. februar 2003 - 21:57 #6
Det troede jeg ikke, man kunne, men det fungerer jo fint.
Læg et svar, så får du points.

Tak til jer begge :)
Avatar billede mortrr Praktikant
24. februar 2003 - 22:32 #7
Selv tak.
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
Kurser inden for grundlæggende programmering

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