OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
 
RE: Strange left join behaviour

From: Becker, Holger (holger.beckersap.com)
Date: Tue May 17 2005 - 03:16:32 CDT


Philippe Chaleat wrote:

> Is there a way to explain this
>
> QUERY 1 :
> select count(*)
> FROM VT_CdeLig CdeLig
> LEFT OUTER JOIN VT_Article Article
> ON CdeLig.noArt = Article.ik AND Article.noDosRes = 1
> LEFT OUTER JOIN VT_Commande Commande
> ON CdeLig.noCde = Commande.ik AND Commande.noDosRes = 1
> WHERE Commande.datDepart >= '2005-04-17' AND
> Commande.datDepart
> <= '2005-04-19' and CdeLig.noDosRes = 1
>
> Result : 209
>
> QUERY 2 (just change the order of the left join in QUERY 1)
>
> select count(*)
> FROM VT_CdeLig CdeLig
> LEFT OUTER JOIN VT_Commande Commande
> ON CdeLig.noCde = Commande.ik AND Commande.noDosRes = 1
> LEFT OUTER JOIN VT_Article Article
> ON CdeLig.noArt = Article.ik AND Article.noDosRes = 1
> WHERE Commande.datDepart >= '2005-04-17' AND
> Commande.datDepart
> <= '2005-04-19' and CdeLig.noDosRes = 1
>
> Result : 29
>
> QUERY 3 : (QUERY 1 withtout a condition in the first ON clause)
> select count(*)
> FROM VT_CdeLig CdeLig
> LEFT OUTER JOIN VT_Article Article
> ON CdeLig.noArt = Article.ik
> LEFT OUTER JOIN VT_Commande Commande
> ON CdeLig.noCde = Commande.ik AND Commande.noDosRes = 1
> WHERE Commande.datDepart >= '2005-04-17' AND
> Commande.datDepart
> <= '2005-04-19' and CdeLig.noDosRes = 1
>
> Result : 29
>
>
> Any idea ?
>
> SAPDB version: 7.4.3.32 - Build: 032-123-068-842

Hi,

I suppose that this are known bugs in older SAPDB versions.
Please upgrade to the newest MaxDB version.

BTW the outer join on VT_Commande is useless because of the
where part.

Kind regards
Holger

--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb