|
| 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
| |
|
|