Avatar billede michael_stim Ekspert
02. november 2007 - 09:17 Der er 9 kommentarer og
1 løsning

SQL forspørgelser.

2 i 1 spørgsmål ;o)

1:
tabel1
id, id2

Skal have alle poster hvor id forekommer mere end en gang men hvor id2 er forskelligt.

ex:
id = 1, id2 = 2
id = 1, id2 = 3

Har prøvet med group by og having med en count.

select distinct id, id2, count(*) as antal
from tabel
where kundetype = 12 and
having antal > 1
group by id, id2;

2.
tabel1
id, id2

tabel2
id, id2

Her skal jeg så finde det samme.

select distinct a.id, a.id2 as tab1, b.id2 as tab2
from tabel1 a, tabel2 b
where a.id = b.id and
a.id2 <> b.id2 and
a.kundetype = b.kundetype and
a.kundetype = 12;

Håber det giver nogen mening.
Avatar billede Slettet bruger
02. november 2007 - 09:32 #1
jeg tror du kan lave 1 med

select id, id2, count(*)
from tabel
where kundetype = 12
group by id, id2
Avatar billede michael_stim Ekspert
02. november 2007 - 09:59 #2
Hej Jørn,
Skal ikke have dem med hvor der ikke er forskellige id2.
Avatar billede michael_stim Ekspert
02. november 2007 - 10:02 #3
Og count(*) behøver jeg ikke. Det var bare for at få dem med med mere end en forkomst.
Avatar billede michael_stim Ekspert
02. november 2007 - 10:05 #4
id = 1  id2 = 1
id = 1  id2 = 2
id = 2  id2 = 1
id = 3  id2 = 1
id = 3  id2 = 2

Så skal jeg have id = 1 og id = 3 + id2's værdier
Avatar billede teepee Nybegynder
02. november 2007 - 10:32 #5
Det lyder som om at 1'eren løses med
select *
from tabel
where id in(
select id
from tabel
where kundetype = 12
group by id
having count(id2)>1
)
Avatar billede teepee Nybegynder
02. november 2007 - 10:32 #6
2'eren forstår jeg ikke, vil du uddybe...
Avatar billede michael_stim Ekspert
02. november 2007 - 12:10 #7
teepee>> Fungerer desværre ikke da der kan være flere forekomster af id = 2. Kig ikke på kolonnenavnene, det er bare fiktivt (måske dårligt at kalde dem id, da man så har tendens til at tro de skal være unikke).

kolonne1 = 1  kolonne2 = 1
kolonne1 = 1  kolonne2 = 2
kolonne1 = 1  kolonne2 = 2
kolonne1 = 2  kolonne2 = 1
kolonne1 = 2  kolonne2 = 1
kolonne1 = 3  kolonne2 = 1
kolonne1 = 3  kolonne2 = 1
kolonne1 = 3  kolonne2 = 2

Skal så have kolonne1 og 3 ud, da de har værdier i kolonne2 der er forskellige.
Avatar billede michael_stim Ekspert
02. november 2007 - 12:12 #8
Skal så have kolonne1 = 1 og kolonne1 = 3 ud, da de har værdier i kolonne2 der er forskellige. Skulle der stå
Avatar billede michael_stim Ekspert
02. november 2007 - 13:54 #9
select *
from tabel
where id in(
select id
from tabel
where kundetype = 12
group by id
having count(distinct id2)>1
)

Er svaret på spg 1.

Spg 2, skal jeg finde de kolonner hvor kolonne2 er forskellig fra tabel1 og tabel2 men kolonne1 er ens. Tror også jeg har den.
Avatar billede michael_stim Ekspert
02. november 2007 - 14:20 #10
Svaret på spg 2 er hvad jeg skrev i spørgsmålet længst oppe. Tak for hjælpen og jeres tid til jer begge to.
Og ha' en god weekend.
//Michael
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