Focal Point
"WHERE NOT EXISTS" Oracle to WebFocus

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/5271041091

October 10, 2006, 09:35 AM
Tim Schraepen
"WHERE NOT EXISTS" Oracle to WebFocus
Does anyone know of a way to simulate or rather translate the "WHERE NOT EXISTS" statement of Oracle into WebFocus?

Where not exists is used when you need to find missing links between two tables.
e.g. Department has a "Deptno" field (primary key) and Employee also has a "Deptno" field (foreign key)
You'd go like
SELECT count(*)
from employee e
where not exists (
select '1'
from department d
where d.deptno = e.deptno)
And get the amount of employees without a department.

I've tried using "MATCH" with AFTER MATCH OLD-NOR-NEW and NEW-NOT-OLD, but when I use COUNT equ_equnr it still gives me an incorrect result.

Code:
DEFINE FILE POPLAN
-* To exclude the possibility that WebFocus is missing joins with "null" fields.
EQUNR/A18 = IF MPOS_EQUNR = ' ' THEN '0'
ELSE MPOS_EQUNR;
END

-* Equipment
MATCH FILE EQUIPMNT
PRINT
EQU_EQART
EQU_TPLNR
EQU_EQTYP
BY EQU_EQUNR

RUN
-* Preventive Maintenance Plan
FILE POPLAN
PRINT
*
BY EQUNR
AFTER MATCH HOLD AS 'EQU' OLD-NOR-NEW
END

-* Equipments without POPlan

TABLE FILE EQU
COUNT EQU_EQUNR
END


As usual any help is greatly appreciated.
Greets, Tim.


WebFocus 5.2.4
iWay ETL Manager 5.2.4
Windows 2000
October 10, 2006, 09:54 AM
Kamesh
Hope this is what you are looking for,

TABLE FILE DEPARTMENT
PRINT DST.DEPTNO
ON TABLE HOLD AS DEPTDAT
END
-RUN

TABLE FILE EMPLOYEE
PRINT EMPNO
WHERE NOT DEPTNO IN FILE DEPTDAT
END
-RUN
-EXIT


WFConsultant

WF 8105M on Win7/Tomcat
October 10, 2006, 10:03 AM
susannah
quote:
DEFINE FILE POPLAN
-* To exclude the possibility that WebFocus is missing joins with "null" fields.
EQUNR/A18 = IF MPOS_EQUNR = ' ' THEN '0'
ELSE MPOS_EQUNR;
END

EQUNR/A18 MISSING ON = IF MPOS_EQUNR EQ ' ' THEN MISSING ELSE MPOS_EQUNR;




In Focus since 1979///7706m/5 ;wintel 2008/64;OAM security; Oracle db, ///MRE/BID
October 10, 2006, 10:08 AM
Leah
I use ON TABLE SET ALL ON and print the field, hold the data and then check for the field being blank or zeros. We are DB2.


Leah
October 10, 2006, 11:56 AM
Jeeva
Check your BY field formats to see if they are the same. In order to use MATCH command correctly BY field formats should be equal.

Jeeva


Production WebFOCUS 7.6.2, Platform Win2003, Database Oracle 10g
October 11, 2006, 03:55 AM
Tim Schraepen
quote:
Originally posted by Leah:
I use ON TABLE SET ALL ON and print the field, hold the data and then check for the field being blank or zeros. We are DB2.


Thanks everyone for your replies!

Here's the final code I used:

JOIN EQU_EQUNR IN EQUIPMNT
TO ALL MPOS_EQUNR IN POPLAN
AS J1
END

DEFINE FILE EQUIPMNT
EQUNR/A18 MISSING ON = IF MPOS_EQUNR EQ ' ' THEN MISSING ELSE MPOS_EQUNR;
END

TABLE FILE EQUIPMNT
COUNT EQU_EQUNR
WHERE EQUNR IS MISSING;
ON TABLE SET ALL ON
END

It was the piece of code, Leah suggested that got it working, so thanks a bunch Leah!


WebFocus 5.2.4
iWay ETL Manager 5.2.4
Windows 2000
October 11, 2006, 09:12 AM
Leah
You're welcome Tim, I may try your solution sometime as well.

Have a great day all.


Leah