>>select >>... >>from trans T INNER join Trans_Employees_Queues Q on T.cTrans_pk = Q.cTrans_fk >>INNER JOIN .... >>LEFT JOIN Employee_Queue_Schedules S ON S.FK= >>WHERE .... and S.FK IS NULL >> >>>________________________________
- JOIN : with JOIN rule and ON condition, produce the workset - WHERE : applies a condition to the workset - GROUP BY : trasform the workset - HAVING : applies a condition to the workset - DISTINCT : remove duplicate - ORDER BY : sort the worksetthe optimizer can apply some theorem of "Relational Algebra" to try to reduce the quantity
CLEAR SET OPTIMIZE ON create cursor TABLE1 (FIELD1 I) INDEX ON FIELD1 TAG T1 insert into TABLE1 values(1) insert into TABLE1 values(2) Create cursor TABLE2( FIELD2 I NULL, FIELD3 I,FIELD4 I ) INDEX ON FIELD2 TAG T2 INDEX ON FIELD3 TAG T3 insert into TABLE2 values (1 ,NULL,1) insert into TABLE2 values (1 ,3,2) insert into TABLE2 values (1 ,3,2) CLEAR SYS(3054,12) * this uses T3 index SELECT FIELD1,FIELD4 ; into cursor tLeftWhere ; from TABLE1 LEFT JOIN TABLE2 ON FIELD1 = FIELD2 ; WHERE FIELD3 is NOT null * this doesn't use T3 index SELECT FIELD1,FIELD4 ; into cursor tLeftWhere ; from TABLE1 LEFT JOIN TABLE2 ON FIELD1 = FIELD2 ; WHERE FIELD3 is null>Shouldn't that be HAVING instead of WHERE ?
>create cursor Customer (c_id I) > insert into Customer values(1) > insert into Customer values(2) > > Create cursor Orders( ord_id I, Ord_c_id I ) > > insert into Orders values (22, 2) > insert into Orders values (24, 2) > > && find customers without order(s) > > && (1) > select c_id ; > from Customer ; > into cursor tmp1 ; > where ( not exists ; > (select * from Orders where (Ord_c_id = c_id) ) ; > ); > > brow > > && (2) left join, with having > select c_id, ; > ord_id ; > from Customer ; > left join Orders on (Ord_c_id = c_id) ; > into cursor tmp2 ; > having ( ord_id is null ) > > brow > > > && (3) left join, with where > select c_id, ; > ord_id ; > from Customer ; > left join Orders on (Ord_c_id = c_id) ; > into cursor tmp3 ; > where ( ord_id is null ) > > brow >Fabio