Focal Point Banner


As of December 1, 2020, Focal Point is retired and repurposed as a reference repository. We value the wealth of knowledge that's been shared here over the years. You'll continue to have access to this treasure trove of knowledge, for search purposes only. Moving forward, myibi is our community platform to learn, share, and collaborate. We have the same Focal Point forum categories in myibi, so you can continue to have all new conversations there. If you need access to myibi, contact us at myibi@ibi.com and provide your corporate email address, company, and name.


Connect to myibi
Focal Point    Focal Point Forums  Hop To Forum Categories  WebFOCUS/FOCUS Forum on Focal Point     Joining 2 tables in focus

Read-Only Read-Only Topic
Go
Search
Notify
Tools
Joining 2 tables in focus
 Login/Join
 
<ort>
posted
Hello,

I don't know how to translate the following 2 sql queries to focus language:

1. using minus between 2 tables:
select student_id
from students
minus
select student_id
from students_diploma

2. using union all between 2 tables:
SELECT CLASS_ID, STUDENT_ID,
FROM C_CLASS_STUDENTS_HISTORY
UNION ALL
SELECT CLASS_ID, STUDENT_ID,
FROM C_CLASS_STUDENTS

Can you write me the code in focus please ?

Thanks
 
Report This Post
<pranasH>
posted
Union:

TABLE FILE CAR
PRINT CAR
ON TABLE HOLD
END

TABLE FILE CAR
PRINT CAR
MORE
FILE HOLD
END

For minus use "MERGE ... ON MATCH ..." dont remermber exactly :-)

Pranas
 
Report This Post
Expert
posted Hide Post
ort, its probably a good idea to start with MATCH syntax. Have a read of Chapter 15 in the text "Creating Reports with WF Language".
The Match command accomplishes the lateral merger of two files, giving all 6 outcome possibilities. (A, B, A and B, A or B, A not B, B not A); its a good idea to master the MATCH concept, before you move on the mastering JOINS.
MATCH is very powerful, and easy. In your example, it seems you want a list of all the students who haven't gotten their diplomas yet.
so you'ld be using a A not B scenario.
something like:
MATCH FILE STUDENTS
WRITE ... BY STUDENT_ID
RUN
FILE STUDENTS_DIPLOMA
WRITE ... BY STUDENT_ID
AFTER MATCH HOLD OLD-NOT-NEW
END
..of course you'll need a master for that diploma file that has a shorter name.
And in your second example, you'll
be wanting the union, thats A OR B
so your command will be
AFTER MATCH HOLD OLD-OR-NEW
Got it?
 
Posts: 3811 | Location: Manhattan | Registered: October 28, 2003Report This Post
Expert
posted Hide Post
Ort,

You can always resort to 'good old' SQL passthru -

1. using minus between 2 tables:
SQL
select student_id
from students
minus
select student_id
from students_diploma
;
TABLE FILE SQLOUT
PRINT *
END


2. using union all between 2 tables:
SQL
SELECT CLASS_ID, STUDENT_ID,
FROM C_CLASS_STUDENTS_HISTORY
UNION ALL
SELECT CLASS_ID, STUDENT_ID,
FROM C_CLASS_STUDENTS
;
TABLE FILE SQLOUT
PRINT *
END
 
Posts: 5694 | Location: United Kingdom | Registered: April 08, 2004Report This Post
  Powered by Social Strata  

Read-Only Read-Only Topic

Focal Point    Focal Point Forums  Hop To Forum Categories  WebFOCUS/FOCUS Forum on Focal Point     Joining 2 tables in focus

Copyright © 1996-2020 Information Builders