Avatar billede sun Nybegynder
19. august 2010 - 14:29 Der er 13 kommentarer og
1 løsning

Ligge to SELECT sammen

Hvordan skriver jeg de her to SELECT sammen, så de bliver til en.

SELECT  DISTINCT  LinkType.UserID
FROM LinkType
WHERE (((LinkType.TypeID)=10) AND ((LinkType.Radio)<=3));

SELECT  DISTINCT  LinkType.UserID
FROM LinkType
WHERE (((LinkType.TypeID)=11) AND ((LinkType.Radio)<=2));


Den først giver 1,2,3,4
og anden giver 3,4,5,6

Skal de når de skrevet sammen kun give 3,4

Tak på forhånd.....
Avatar billede mungojerrie Nybegynder
19. august 2010 - 14:40 #1
SELECT  DISTINCT  LinkType.UserID
FROM LinkType
WHERE (((LinkType.TypeID)=10) AND ((LinkType.Radio)<=3));

UNION

SELECT  DISTINCT  LinkType.UserID
FROM LinkType
WHERE (((LinkType.TypeID)=11) AND ((LinkType.Radio)<=2));
Avatar billede sun Nybegynder
19. august 2010 - 15:03 #2
hmmm den giver jo 1,2,3,4,5,6 som resultat?

jeg skal ende med kun 3,4
Avatar billede sun Nybegynder
19. august 2010 - 15:07 #3
Min test DB ser sådan ud..

LinkType

ID    UserID    TypeID    Radio
1    1    10    3
2    2    10    3
3    3    10    3
4    3    11    2
5    4    10    3
6    4    11    2
7    5    11    2
8    6    11    2
Avatar billede michael_stim Ekspert
19. august 2010 - 15:09 #4
SELECT  DISTINCT  LinkType.UserID
FROM LinkType
WHERE (((LinkType.TypeID)=10) AND ((LinkType.Radio)<=3)) OR
(((LinkType.TypeID)=11) AND ((LinkType.Radio)<=2));
Avatar billede michael_stim Ekspert
19. august 2010 - 15:11 #5
Så behøver man ikke så mange paranteser, det gør det bare forvirrende:

SELECT  DISTINCT  LinkType.UserID
FROM LinkType
WHERE (LinkType.TypeID=10 AND LinkType.Radio<=3) OR
(LinkType.TypeID=11 AND LinkType.Radio<=2);
Avatar billede mungojerrie Nybegynder
19. august 2010 - 15:11 #6
så du vil finde fælles mængden?
Avatar billede michael_stim Ekspert
19. august 2010 - 15:13 #7
Og så skal du måske bruge AND i stedet for OR afhængigt af hvilket resultat du vil have ;o)
Avatar billede sun Nybegynder
19. august 2010 - 15:16 #8
michael_stim > virker ikke, or giver dem alle, and giver 0

mungojerrie > ja,  fælles mængden
Avatar billede arne_v Ekspert
19. august 2010 - 15:28 #9
proev:

SELECT  DISTINCT  L1.UserID
FROM LinkType L1, LinkType L2
WHERE L1.TypeID=10 AND L1.Radio<=3 AND L2.TypeID=11 AND L2.Radio<=2 AND L1.UserID=L2.UserID
Avatar billede mungojerrie Nybegynder
19. august 2010 - 15:29 #10
hvis du benytter ms sql 2005 og derover kan du bruge keyword
INTERSECT
den skifter du bare med UNION som jeg skrev før
Avatar billede mungojerrie Nybegynder
19. august 2010 - 15:31 #11
Avatar billede sun Nybegynder
19. august 2010 - 15:41 #12
arne_v > virker! super,

Så du laver bare en linktype med et (sub navn) eller hvad det hender? så den tager dem individuel, smart!

smid et svar...
Avatar billede arne_v Ekspert
19. august 2010 - 15:45 #13
svar
Avatar billede arne_v Ekspert
19. august 2010 - 15:46 #14
den saakaldte self join er god naar man skal have noget der er identificeret via mere end en raekke
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