Subject | Re: [firebird-support] SQL and Left Outer Join. |
---|---|
Author | Martijn Tonies |
Post date | 2004-09-28T14:16:49Z |
Hello Michael,
hard to tell.
With regards,
Martijn Tonies
Database Workbench - developer tool for InterBase, Firebird, MySQL & MS SQL
Server.
Upscene Productions
http://www.upscene.com
> I have a SQL statement like this:Not if the resulting T3 values don't match the WHERE clause.
>
> SELECT
> T1.PLU_NR,
> T2.AFDELING_ID,
> T2.ANTALSTK,
> SUM( T3.ANTAL ),
> SUM( T3.KANTAL )
> FROM T2
> RIGHT OUTER JOIN T1 ON (T2.VAREPLU_ID = T1.PLU_NR)
> LEFT OUTER JOIN T3 ON (T2.VAREPLU_ID = T3.VAREPLU_ID) AND
> (T2.AFDELING_ID = T3.AFDELING_ID)
> WHERE
> (
> (T1.plu_Nr = '000010')
> )
> GROUP BY
> T1.PLU_NR,
> T2.AFDELING_ID,
> T2.ANTALSTK
> ORDER BY
> T1.PLU_NR,
> T2.AFDELING_ID
>
>
> This gives me a result like this:
>
> 000010, 001, 111, <null>, <null>
> 000010, 002, 222, 45, 87
>
> If I then add one more condition like this one:
>
> SELECT
> T1.PLU_NR,
> T2.AFDELING_ID,
> T2.ANTALSTK,
> SUM( T3.ANTAL ),
> SUM( T3.KANTAL )
> FROM T2
> RIGHT OUTER JOIN T1 ON (T2.VAREPLU_ID = T1.PLU_NR)
> LEFT OUTER JOIN T3 ON (T2.VAREPLU_ID = T3.VAREPLU_ID) AND
> (T2.AFDELING_ID = T3.AFDELING_ID)
> WHERE
> (
> (T1.plu_Nr = '000010')
> AND
> (((T3.aar*100)+T3.mdr)>=200401)
> )
> GROUP BY
> T1.PLU_NR,
> T2.AFDELING_ID,
> T2.ANTALSTK
> ORDER BY
> T1.PLU_NR,
> T2.AFDELING_ID
>
>
> Then the first line with the <null> values are left out.
>
> I thought, that when I made an LEFT OUTER JOIN I would get every
> record as in the first eventhough I put on a condition regarding
> table T3.
> The result set should have been:Well, we don't have the T3.AAR or T3.MDR data, so it's a bit
>
> 000010, 001, 111, <null>, <null>
> 000010, 002, 222, 22, 43
>
> But it is:
> 000010, 002, 222, 22, 43
>
>
> I really would like to have to first line present as well !
hard to tell.
With regards,
Martijn Tonies
Database Workbench - developer tool for InterBase, Firebird, MySQL & MS SQL
Server.
Upscene Productions
http://www.upscene.com