/ 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
sql2005 find record der ikke er der :-)
Fra : Steen Hansen


Dato : 12-12-08 14:14


select a.id

from a , b

where

a.id=b.aid and a.y=XXX and b.z=FFF

ovenstående vil retunere a.id med en værdi hvis ovenstående records
findes.

men hvordan får jeg også retuneret a.id hvis a.id=b.aid ikke eksistere
?

Populært sagt

(a.id=b.aid) = NULL

dvs aldigt noget sammenfald mellem a.id og b.aid

Håber det er forståligt

MVH
Steen

 
 
Arne Vajhøj (12-12-2008)
Kommentar
Fra : Arne Vajhøj


Dato : 12-12-08 16:57

Steen Hansen wrote:
> select a.id
>
> from a , b
>
> where
>
> a.id=b.aid and a.y=XXX and b.z=FFF
>
> ovenstående vil retunere a.id med en værdi hvis ovenstående records
> findes.
>
> men hvordan får jeg også retuneret a.id hvis a.id=b.aid ikke eksistere
> ?
>
> Populært sagt
>
> (a.id=b.aid) = NULL
>
> dvs aldigt noget sammenfald mellem a.id og b.aid
>
> Håber det er forståligt

En eller anden form for OUTER JOIN vil jeg tro.

Siden du skal bruge a.id så formentligt en LEFT JOIN.

Arne

Steen Hansen (13-12-2008)
Kommentar
Fra : Steen Hansen


Dato : 13-12-08 09:00

On Fri, 12 Dec 2008 10:57:07 -0500, Arne Vajhøj <arne@vajhoej.dk>
wrote:

>Steen Hansen wrote:
>> select a.id
>>
>> from a , b
>>
>> where
>>
>> a.id=b.aid and a.y=XXX and b.z=FFF
>>
>> ovenstående vil retunere a.id med en værdi hvis ovenstående records
>> findes.
>>
>> men hvordan får jeg også retuneret a.id hvis a.id=b.aid ikke eksistere
>> ?
>>
>> Populært sagt
>>
>> (a.id=b.aid) = NULL
>>
>> dvs aldigt noget sammenfald mellem a.id og b.aid
>>
>> Håber det er forståligt
>
>En eller anden form for OUTER JOIN vil jeg tro.
>
>Siden du skal bruge a.id så formentligt en LEFT JOIN.
>
>Arne

Har jeg prøvet men uden held desværre

Steen

Jan Bachman (13-12-2008)
Kommentar
Fra : Jan Bachman


Dato : 13-12-08 09:28

On Sat, 13 Dec 2008 09:00:03 +0100, Steen Hansen <test@test.dk> wrote:

>Har jeg prøvet men uden held desværre
>
>Steen

Tag de heldige bukser på og prøv denne:

select a.id
from a
left join (
select b.aid
from b
where b.z=FFF
) as c
on a.id = c.aid
where a.y=XXX

/Jan

Stig Johansen (13-12-2008)
Kommentar
Fra : Stig Johansen


Dato : 13-12-08 13:51

Jan Bachman wrote:

> On Sat, 13 Dec 2008 09:00:03 +0100, Steen Hansen <test@test.dk> wrote:
>
>>Har jeg prøvet men uden held desværre
>>
>>Steen
>
> Tag de heldige bukser på og prøv denne:
>
> select a.id
> from a
> left join (
> select b.aid
> from b
> where b.z=FFF
> ) as c
> on a.id = c.aid
> where a.y=XXX

Jeg synes ikke rigtig det giver mening.
OP er åbenbart ude på at finde de records der ikke eksisterer, og ikke
totalmængden.

Han skriver:
> Populært sagt
> (a.id=b.aid) = NULL
> dvs aldigt noget sammenfald mellem a.id og b.aid

Det burde kunne klares med:
SELECT Id FROM
A
LEFT OUTER JOIN B ON B.Aid=A.Id
WHERE A.Y = XXX AND B.Aid IS NULL

Men han indfører også en anden klausul, nemlig B.Y=FFF

Hvis han vil have de records, der ikke opfylder disse betingelser burde han
kunne lave det med:
SELECT Id FROM
A
LEFT OUTER JOIN B ON B.Aid=A.Id AND B.Y=FFF
WHERE A.Y = XXX AND B.Aid IS NULL

(Ikke testet)

--
Med venlig hilsen
Stig Johansen

Michael Zedeler (14-12-2008)
Kommentar
Fra : Michael Zedeler


Dato : 14-12-08 10:53

Steen Hansen wrote:
> select a.id
>
> from a , b
>
> where
>
> a.id=b.aid and a.y=XXX and b.z=FFF
>
> ovenstående vil retunere a.id med en værdi hvis ovenstående records
> findes.
>
> men hvordan får jeg også retuneret a.id hvis a.id=b.aid ikke eksistere
> ?
>
> Populært sagt
>
> (a.id=b.aid) = NULL
>
> dvs aldigt noget sammenfald mellem a.id og b.aid

Hvis du vil have alle de rækker fra a hvor det gælder at der ikke findes
en række i b, hvor a.id = b.aid, så:

SELECT *
FROM a
WHERE id NOT IN (SELECT aid FROM b)

Mvh. Michael.

Steen Hansen (15-12-2008)
Kommentar
Fra : Steen Hansen


Dato : 15-12-08 15:08

On Sun, 14 Dec 2008 10:53:28 +0100, Michael Zedeler
<michael@zedeler.dk> wrote:

>Steen Hansen wrote:
>> select a.id
>>
>> from a , b
>>
>> where
>>
>> a.id=b.aid and a.y=XXX and b.z=FFF
>>
>> ovenstående vil retunere a.id med en værdi hvis ovenstående records
>> findes.
>>
>> men hvordan får jeg også retuneret a.id hvis a.id=b.aid ikke eksistere
>> ?
>>
>> Populært sagt
>>
>> (a.id=b.aid) = NULL
>>
>> dvs aldigt noget sammenfald mellem a.id og b.aid
>
>Hvis du vil have alle de rækker fra a hvor det gælder at der ikke findes
> en række i b, hvor a.id = b.aid, så:
>
>SELECT *
> FROM a
> WHERE id NOT IN (SELECT aid FROM b)
>
>Mvh. Michael.


Mange tak
det var lige løsningen på mit problem

Hilsen
Steen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste