>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:
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
BTW WHY you use ALIAS() in SQL Statement?
Against Stupidity the Gods themselves Contend in Vain - Johann Christoph Friedrich von Schiller
The only thing normal about database guys is their tables.