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

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