/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MS SQLServer : advanceret join
Fra : Kasper Kamp Simonsen


Dato : 10-07-02 17:13

Hej NG....

Jeg sidder med et problem jeg håber i kan hjælpe mig med.

Jeg har to sql forespørgelser som giver mig følgende output

FastNr KombiListeId
F5004 186
F4224 187
F5798 196
F5004 231

FastNr KombiListeId
F5004 186
F5244 187
F4224 187
F5798 196
F5004 231

Nu har jeg brug for at koble de to forspørgelser sammen så jeg får fjernet
de entrys med KombiListeId = 187, da
antallet af 187 ikke er det samme i de to outputs.

Nogen ide til hvordan jeg gør det?

/Kasper



 
 
Jens Gyldenkærne Cla~ (10-07-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 10-07-02 21:58

Kasper Kamp Simonsen skrev:

> Nu har jeg brug for at koble de to forspørgelser sammen så jeg
> får fjernet de entrys med KombiListeId = 187, da
> antallet af 187 ikke er det samme i de to outputs.

Jeg er bange for at jeg ikke forstår hvad du mener med at koble
sammen. Men her kommer et par skud fra hoften:

Hvis du vil have de poster som er ens (har samme FastNr og
KombiListeID) i begge forespørgsler:

SELECT f1.*
FROM f1 INNER JOIN f2
ON f1.FastNr = f2.FastNr
AND f1.KombiListeID = f2.KombiListeID

Hvis du vil have kombinationen af de to forespørgsler, bortset fra
poster med klID = 187:

SELECT f1
WHERE KombiListeID <> 187
UNION
SELECT f2
WHERE KombiListeID <> 187

Er det noget helt tredje må du specificere hvordan din kombination
skal være.

--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Kasper Kamp Simonsen (11-07-2002)
Kommentar
Fra : Kasper Kamp Simonsen


Dato : 11-07-02 08:26


"Jens Gyldenkærne Clausen" wrote
> Kasper Kamp Simonsen skrev:
>
> > Nu har jeg brug for at koble de to forspørgelser sammen så jeg
> > får fjernet de entrys med KombiListeId = 187, da
> > antallet af 187 ikke er det samme i de to outputs.
>
> Jeg er bange for at jeg ikke forstår hvad du mener med at koble
> sammen. Men her kommer et par skud fra hoften:

Ok, jeg prøver lige igen

Resultat 1 Resultat 2
FastNr KombiListeId FastNr KombiListeId
F5004 186 F5004 186
F4224 187 F5244 187
F5798 196 F4224 187
F5004 231 F5798 196
F5004 231

Ovenstående er mine to resultater. Det endelige resultat jeg gerne vil have
ud skal se sådan her ud....

F5004 186
F5798 196
F5004 231

Den måde jeg finder ud af om et resultat skal med i mit endelige resultat er
ved at sige.

I resultat 1 forekommer kombiListeId 186 listeså mange gange som det gør i
resultat 2 derfor er den ok
I resultat 1 forekommer kombiListeId 187 færre gange end det gør i resultat
2 derfor er den IKKE ok
I resultat 1 forekommer kombiListeId 196 listeså mange gange som det gør i
resultat 2 derfor er den ok
I resultat 1 forekommer kombiListeId 231 listeså mange gange som det gør i
resultat 2 derfor er den ok

Håber det forklarer lidt bedre hvor jeg vil hen.

/Kasper



Kristian Damm Jensen (12-07-2002)
Kommentar
Fra : Kristian Damm Jensen


Dato : 12-07-02 10:29

Kasper Kamp Simonsen wrote:
>
> Hej NG....
>
> Jeg sidder med et problem jeg håber i kan hjælpe mig med.
>
> Jeg har to sql forespørgelser som giver mig følgende output
>
> FastNr KombiListeId
> F5004 186
> F4224 187
> F5798 196
> F5004 231
>
> FastNr KombiListeId
> F5004 186
> F5244 187
> F4224 187
> F5798 196
> F5004 231
>
> Nu har jeg brug for at koble de to forspørgelser sammen så jeg får fjernet
> de entrys med KombiListeId = 187, da
> antallet af 187 ikke er det samme i de to outputs.

Det er kun antallet, der er afgørende?

Hvis jeg nu udvider dit eksempel

FastNr KombiListeId
F5004 186
F4224 187
F5798 196
F5004 231
F5004 232

FastNr KombiListeId
F5004 186
F5244 187
F4224 187
F5798 196
F5004 231
F5005 232

Er det så korrekt opfattet, at KombiListeId = 232 skal med i output,
fordi den forekommer én gang i hver liste - også selvom der er
forskelligt fastnr i de to lister? Og hvis svaret er ja, hvad skal
resultatet så være, når der er forskelligt FastNr? Begge, eller en
tilfældigt valgt?


--
Kristian Damm Jensen | Feed the hungry at www.thehungersite.com
kristian-damm.jensen@cgey.com | Two wrongs doesn't make a right,
ICQ# 146728724 | but three lefts do.


Arne Lundsgaard (13-07-2002)
Kommentar
Fra : Arne Lundsgaard


Dato : 13-07-02 11:54

Jeg har følgende løsning som fungerer i en Oracle database

select kombilisteid, count(fastnr)
from res1
group by kombilisteid
intersect
select kombilisteid, count(fastnr)
from res2
group by kombilisteid;

men såvidt jeg husker understøtter MS_SQL ikke fællesmængde operatoren

Arne

"Kasper Kamp Simonsen" <idontlikespam@anywhere.dk> skrev i en meddelelse
news:3d2c5d07$0$12724$edfadb0f@dspool01.news.tele.dk...
> Hej NG....
>
> Jeg sidder med et problem jeg håber i kan hjælpe mig med.
>
> Jeg har to sql forespørgelser som giver mig følgende output
>
> FastNr KombiListeId
> F5004 186
> F4224 187
> F5798 196
> F5004 231
>
> FastNr KombiListeId
> F5004 186
> F5244 187
> F4224 187
> F5798 196
> F5004 231
>
> Nu har jeg brug for at koble de to forspørgelser sammen så jeg får fjernet
> de entrys med KombiListeId = 187, da
> antallet af 187 ikke er det samme i de to outputs.
>
> Nogen ide til hvordan jeg gør det?
>
> /Kasper
>
>



Kasper Kamp Simonsen (16-07-2002)
Kommentar
Fra : Kasper Kamp Simonsen


Dato : 16-07-02 16:03


"Arne Lundsgaard" <alu@arbejdstilsynet.dk> wrote in message
news:3d30071c$0$12715$edfadb0f@dspool01.news.tele.dk...

> select kombilisteid, count(fastnr)
> from res1
> group by kombilisteid
> intersect
> select kombilisteid, count(fastnr)
> from res2
> group by kombilisteid;
>
> men såvidt jeg husker understøtter MS_SQL ikke fællesmængde operatoren

Det gør den , mange tak for hjælpen

/Kasper



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste