Posts tagged join
Joining is a key ingredient in most SQL queries. Using collections (aka nested tables) that are produced on the fly inside the SQL query or that are returned by a PL/SQL function that is invoked from a TABLE operator in the query is a powerful weapon as well. Oracle Database 12c has extended the SQL syntax and functionality for joining with collections in such a way that the call to the PL/SQL function that creates the collection can take an input parameter taken from the records from the table to which it is joined. That is a little abstract, so let’s quickly look at an example:
It was fairly difficult to come up with a title for this article that sort of covers the content. To me it is quite clear what this is about – but how to convey that in a title? Let me explain: today in our project we discussed the implementation of a data service. The service operation under scrutiny takes a city as input and returns a list all open orders from customers located in that city. Nothing very special there. The interesting complication lies in the fact that the customers are part of a different domain than the orders. This means – under our architecture guidelines – that we cannot create a single SQL query that joins together the customers table with the orders table. A database link to join the tables across databases is out of the question and even if these tables currently reside in the same database – such a join is not allowed. Different data domains are treated as independent entities and no direct dependencies between the two should be created. Every design has pass the check ‘will it still work if one of the domains involved were to be relocated to the cloud or be replaced by a third party application’.
The architecture is service oriented. Every domain More >
AMIS Masterclass Advanced SQL – scherp je SQL skills in een pittige en praktijkgerichte dag – maandag 10 december0
Of je nu ‘klassieke’ Oracle applicaties ontwikkelt, met APEX bezig bent, een SOA landschap inricht of een Java/JEE (bijvoorbeeld ADF) applicatie bouwt: het fundament van veel van wat je doet is de database. En de crux van optimaal gebruik van de database is en blijft SQL. Dit bepaalt performance en schaalbaarheid en ook ontwikkel-productiviteit en zelfs pure functionaliteit. SQL kan veel meer in de Oracle Database dan de meeste – ook heel ervaren ontwikkelaars – weten. Tussen Oracle7 en Oracle 11gR2 is er met eigenlijk iedere release enorm veel kracht bijgekomen in de handen van “SQL componisten”. En je doet jezelf tekort als je niet regelmatig je SQL vaardigheden aanscherpt tot de nieuwste technische mogelijkheden en vooral de praktijkbewezen evolutie.
Op maandag 10 december verzorgt AMIS – Oracle specialist in Nieuwegein, sinds 1991 – een Masterclass Advanced SQL. Waarin voor ervaren SQL ontwikkelaars een overzicht wordt gegeven van de evolutie van de database – tot en met 11g Release 2 en met hier en daar al een vooruitblik naar 12c.
The functional requirement was a little unusual. The page should either show all master-records or – depending on the value of a parameter – it should show exactly one master-record joined with exactly one detail-record. The use case was valid – that was exactly the functionality that was required.
In terms of EMP and DEPT -I like to always simplify things to express them in EMP and DEPT terms – , we should either see all Departments (and no Employee data) or we should see the data for a specific Employee joined with the data for its corresponding Department. And of course we just one to create a single page, and make it as simple as possible to create that page.
A simplistic page that supports this functionality could like this:
when a specific Employee is requested and
when all Departments should be shown, because no single Employee is asked for.
Usually in SQL queries, you will try to retrieve information from a database by reading specific records from the relevant tables. However, there are situations where what you want to learn from a query is the fact that something is NOT there. So instead of querying for existing records, you are looking for records that do not exist. This article discusses a number of such situations and demonstrates several “anti-queries”. Where possible, I have used the EMP and DEPT table of the classical SCOTT sample schema to illustrate the point.
Some of these examples are perhaps better used to illustrate specific SQL features – such as CONNECT_BY_ISLEAF, PARTITION OUTER JOIN, LISTAGG, MINUS, SCALAR SUBQUERY and more – than to answer the questions at hand.