> >>>I need to redo sql statement in legacy Foxpro application and don't understand whether it is meaningful at all. >>> >>>SELECT aa.*,b.spa_date FROM (ALIAS()) aa INNER JOIN jobs ON aa.seq=jobs.seq ; >>>LEFT JOIN job2 ON jobs.job_no=job2.rucjob; >>>left join jobs b on b.job_no=job2.job_no; >>>WHERE jobs.qty1 != 0 INTO CURSOR (ALIAS()) >>> >>>Since only one field is added from joined tables ( spa_date ) is there any point in 2 left joins or I am missing something. Isn't it equivalent to >>> >>>SELECT aa.*,jobs.spa_date FROM (ALIAS()) aa INNER JOIN jobs ON aa.seq=jobs.seq ; >>>WHERE jobs.qty1 != 0 INTO CURSOR (ALIAS()) >> >>No, they are not equal. >>Check the difference: >><pre> >>CREATE CURSOR Test (Seq int) >>CREATE CURSOR Jobs (Seq int, Job_no int, spa_date D, qty1 I) >>CREATE CURSOR Job2 (Job_no int, Rucjob int) >> >>INSERT INTO Test VALUES (1) >>INSERT INTO Jobs VALUES(1,1, DATE(), 1) >>INSERT INTO Jobs VALUES(1,2, DATE()+50, 1) >>INSERT INTO Job2 VALUES (1,2) >> >>SELECT Test >>lcAlias = ALIAS() >> >>SELECT aa.*,b.spa_date ; >> FROM Test aa; >>INNER JOIN jobs ON aa.seq=jobs.seq ; >>LEFT JOIN job2 ON jobs.job_no=job2.rucjob; >>LEFT JOIN jobs b on b.job_no=job2.job_no; >>WHERE jobs.qty1 != 0 INTO CURSOR Test1 >>BROWSE NORMAL >> >>SELECT aa.*,jobs.spa_date; >> FROM Test aa; >>INNER JOIN jobs ON aa.seq=jobs.seq ; >>WHERE jobs.qty1 != 0 INTO CURSOR Test1 >>BROWSE NORMAL >>>>