OUTER/INNER JOINS e.g

Hi Gurus!
Can anyone explain with a really simple example(using say employee- department) tables, what is OUTER join, INNER join, Left RIGHT JOINs??
Thanks,
sapa

This question is only loosely related to the Oracle Migration Workbench,
however I included some information:
INNER JOINS are 'simple' joins where all matches, i.e. where both sides of the where clause are found, are returned.
LEFT OUTER JOIN, RIGHT OUTER JOIN and FULL OUTER JOIN [the OUTER keyword is optional] have the unmatched column and row filled in with nulls.
Oracle has its own (+) syntax but the new ANSI style as above in preferred, although the Oracle Migration Workbench does not generate ANSI style output yet.
An example use is where the owner may have no manager, but you might want the owner included in your selection of a hierarchy.
For more information see:
Oracle9i SQL Reference
Release 1 (9.0.1)
Part Number A90125-01
'SQL Queries and Other SQL Statements, 2 of 3'
http://otn.oracle.com/docs/products/oracle9i/doc_library/901_doc/server.901/a90125/queries2.htm#2054014
create table fulltable (col1 char(10), col2 char(10));
create table lefttable (col1 char(10), col2 char(10));
create table righttable (col1 char(10), col2 char(10));
insert into fulltable values ('one','1');
insert into fulltable values ('two','2');
insert into fulltable values ('three','3');
insert into lefttable values ('one','1');
insert into lefttable values ('two',null);
insert into lefttable values ('three','3');
insert into righttable values (null,'1');
insert into righttable values ('two','2');
insert into righttable values (null,'3');
SQL> select lefttable.col1, fulltable.col1 FROM lefttable, fulltable where left
table.col2(+)=fulltable.col2;
COL1 COL1
one one
two
three three
SQL> select lefttable.col1, fulltable.col1 FROM lefttable RIGHT JOIN fulltable
on lefttable.col2=fulltable.col2;
COL1 COL1
one one
three three
two
Turloch
Oracle Migration Workbench Team

Similar Messages

  • Difference between inner join and outer join

    1.Difference between inner join and outer join
    2.wht is the difference in using hide and get crusor value in interactive.
    3. Using join is better or views in writting program . Which is better.

    Table 1                      Table 2
    A
    B
    C
    D
    D
    E
    F
    G
    H
    a1
    b1
    c1
    1
    1
    e1
    f1
    g1
    h1
    a2
    b2
    c2
    1
    3
    e2
    f2
    g2
    h2
    a3
    b3
    c3
    2
    4
    e3
    f3
    g3
    h3
    a4
    b4
    c4
    3
    |--|||--|
        Inner Join
        |--||||||||--|
        | A  | B  | C  | D  | D  | E  | F  | G  | H  |
        |--||||||||--|
        | a1 | b1 | c1 | 1  | 1  | e1 | f1 | g1 | h1 |
        | a2 | b2 | c2 | 1  | 1  | e1 | f1 | g1 | h1 |
        | a4 | b4 | c4 | 3  | 3  | e2 | f2 | g2 | h2 |
        |--||||||||--|
    Example
    Output a list of all flights from Frankfurt to New York between September 10th and 20th, 2001 that are not sold out:
    DATA: DATE   LIKE SFLIGHT-FLDATE,
          CARRID LIKE SFLIGHT-CARRID,
          CONNID LIKE SFLIGHT-CONNID.
    SELECT FCARRID FCONNID F~FLDATE
        INTO (CARRID, CONNID, DATE)
        FROM SFLIGHT AS F INNER JOIN SPFLI AS P
               ON FCARRID = PCARRID AND
                  FCONNID = PCONNID
        WHERE P~CITYFROM = 'FRANKFURT'
          AND P~CITYTO   = 'NEW YORK'
          AND F~FLDATE BETWEEN '20010910' AND '20010920'
          AND FSEATSOCC < FSEATSMAX.
      WRITE: / DATE, CARRID, CONNID.
    ENDSELECT.
    If there are columns with the same name in both tables, you must distinguish between them by prefixing the field descriptor with the table name or a table alias.
    Note
    In order to determine the result of a SELECT command where the FROM clause contains a join, the database system first creates a temporary table containing the lines that meet the ON condition. The WHERE condition is then applied to the temporary table. It does not matter in an inner join whether the condition is in the ON or WHEREclause. The following example returns the same solution as the previous one.
    Example
    Output of a list of all flights from Frankfurt to New York between September 10th and 20th, 2001 that are not sold out:
    DATA: DATE   LIKE SFLIGHT-FLDATE,
          CARRID LIKE SFLIGHT-CARRID,
          CONNID LIKE SFLIGHT-CONNID.
    SELECT FCARRID FCONNID F~FLDATE
        INTO (CARRID, CONNID, DATE)
        FROM SFLIGHT AS F INNER JOIN SPFLI AS P
               ON FCARRID = PCARRID
        WHERE FCONNID = PCONNID
          AND P~CITYFROM = 'FRANKFURT'
          AND P~CITYTO   = 'NEW YORK'
          AND F~FLDATE BETWEEN '20010910' AND '20010920'
          AND FSEATSOCC < FSEATSMAX.
      WRITE: / DATE, CARRID, CONNID.
    ENDSELECT.
    Note
    Since not all of the database systems supported by SAP use the standard syntax for ON conditions, the syntax has been restricted. It only allows those joins that produce the same results on all of the supported database systems:
    Only a table or view may appear to the right of the JOIN operator, not another join expression.
    Only AND is possible in the ON condition as a logical operator.
    Each comparison in the ON condition must contain a field from the right-hand table.
    If an outer join occurs in the FROM clause, all the ON conditions must contain at least one "real" JOIN condition (a condition that contains a field from tabref1 amd a field from tabref2.
    Note
    In some cases, '*' may be specified in the SELECT clause, and an internal table or work area is entered into the INTO clause (instead of a list of fields). If so, the fields are written to the target area from left to right in the order in which the tables appear in the FROM clause, according to the structure of each table work area. There can then be gaps between table work areas if you use an Alignment Request. For this reason, you should define the target work area with reference to the types of the database tables, not simply by counting the total number of fields. For an example, see below:
    Variant 3
    ... FROM tabref1 LEFT [OUTER] JOIN tabref2 ON cond
    Effect
    Selects the data from the transparent database tables and/or views specified in tabref1 and tabref2. tabref1 und tabref2 both have either the same form as in variant 1 or are themselves join expressions. The keyword OUTER can be omitted. The database tables or views specified in tabref1 and tabref2 must be recognized by the ABAP-Dictionary.
    In order to determine the result of a SELECT command where the FROM clause contains a left outer join, the database system creates a temporary table containing the lines that meet the ON condition. The remaining fields from the left-hand table (tabref1) are then added to this table, and their corresponding fields from the right-hand table are filled with ZERO values. The system then applies the WHERE condition to the table.
    Left outer join between table 1 and table 2 where column D in both tables set the join condition:
    Table 1                      Table 2
    A
    B
    C
    D
    D
    E
    F
    G
    H
    a1
    b1
    c1
    1
    1
    e1
    f1
    g1
    h1
    a2
    b2
    c2
    1
    3
    e2
    f2
    g2
    h2
    a3
    b3
    c3
    2
    4
    e3
    f3
    g3
    h3
    a4
    b4
    c4
    3
    |--|||--|
        Left Outer Join
        |--||||||||--|
        | A  | B  | C  | D  | D  | E  | F  | G  | H  |
        |--||||||||--|
        | a1 | b1 | c1 | 1  | 1  | e1 | f1 | g1 | h1 |
        | a2 | b2 | c2 | 1  | 1  | e1 | f1 | g1 | h1 |
        | a3 | b3 | c3 | 2  |NULL|NULL|NULL|NULL|NULL|
        | a4 | b4 | c4 | 3  | 3  | e2 | f2 | g2 | h2 |
        |--||||||||--|
    Regards
    Prabhu

  • Outer join - inner joins at the level of the microcube  between 2 queries

    I have a very simple question.
    If i build 2 queries in webi on the top of the same BW query
    Query 1: Country and Revenue and we do put a filter on the query base of country = US
    Query 2: Country and Revenue and we do not have any filter on this one
    so in webi here is what happen you will get 2 tables
    one table for query 1 where you will see only data for US and then Revenue
    the second table query 2 will only retrieve data for all the countries and their revenue
    Now if i do some merging .. it sounds like it is doing an inner join
    is there a way to get the outer join or the left outer part of it or even the right out part ?
    Thanks in advance
    Philippe

    Hi Philippe,
    Yes you can.  Make sure that the Country coming from Query 2 is the one on the report. Then make sure the Revenue on the report is coming from Query 1. This should give you what you want.
    Hope that helps!
    Thanks

  • Multiple inner joins combined with outer and right.

    Hello
    Can someone give me an example of multiple inner joins?
    Meaning inner join on more than 3 tables. Can someone provide me sql statement that would be great?
    Also can you combine inner outer and right in one query if so how? Again, can someone provide me sql statement that would be great?
    Thank you so much

    You can look at my sample Re: Need Assistance to write a procedure for the below requirements!!!
    John

  • SYNTAX "INNER JOIN and OUTER JOIN"

    Hi Experts,
    I think LEFT JOIN,INNER JOIN syntax is in ANSI.
    I know that Oracle has got its own alternate(+) operator to serve the purpose.
    Please tell me whether INNER JOIN,OUTER JOIN,LEFT JOIN,LEFT OUTER JOIN,RIGHT OUTER JOIN these syntaxes present in ORACLE 8I.
    If not in 9i Or highr versions are they existing?
    Thanks in advance,
    Ananth
    null

    Hi,
    8i has inner join. (+) syntax supports LEFT or RIGHT OUTER JOIN.
    FULL OUTER JOIN is supported in 9i, which introduces the JOIN keyword.
    Herman

  • Time Out by select on DD04L inner join DD04T

    Hello,
    I just installed ERP 2005. After the import of a language package (SMLT, IT, FR, ES) I get some problem.
    If I logon with EN or IT (and I think with any language other than DE) many transaction get a Time Out error in the function module DDIF_FIELDINFO_GET by the following selection:
    *             get texts of primary language (inner join here !)
                  SELECT DD04L~ROLLNAME DD04L~DOMNAME DD04L~HEADLEN
                         DD04L~SCRLEN1  DD04L~SCRLEN2 DD04L~SCRLEN3
                         DD04T~DDLANGUAGE DD04T~DDTEXT    DD04T~REPTEXT
                         DD04T~SCRTEXT_S  DD04T~SCRTEXT_M DD04T~SCRTEXT_L
                         INTO TABLE Rolltexts
                         FROM DD04L inner JOIN DD04T
                         ON DD04T~ROLLNAME = DD04L~ROLLNAME AND
                            DD04T~AS4LOCAL = 'A' AND
                            DD04T~DDLANGUAGE = langu_loc
                         FOR ALL ENTRIES IN missing
                         WHERE DD04L~ROLLNAME = missing-ROLLNAME
                           AND DD04L~AS4LOCAL = 'A'.
    That is, the ERP is using sequential read instead of direct read.
    Any idea is welcomed.
    Thanks & regards,
    Tommaso

    Hello,
    Thanks for your replies.
    I checked OSS and I found nothing.
    ST05 gives me this SQL command: (more than 500 sec!)
    SELECT T_00 . "ROLLNAME" , T_00 . "DOMNAME" , T_00 . "HEADLEN" , T_00 . "SCRLEN1" , T_00 . "SCRLEN2" , T_00 . "SCRLEN3" , T_01 . "DDLANGUAGE" , T_01 . "DDTEXT" , T_01 . "REPTEXT" , T_01 . "SCRTEXT_S" , T_01 . "SCRTEXT_M" , T_01 . "SCRTEXT_L" FROM "DD04L"
    T_00 INNER JOIN "DD04T" T_01 ON T_01 . "ROLLNAME" = T_00 . "ROLLNAME" AND T_01 . "AS4LOCAL" = 'A' AND T_01 . "DDLANGUAGE" = 'I' WHERE T_00 . "ROLLNAME" = 'VAL_TEXT' AND T_00 . "AS4LOCAL" = 'A'
    I executed it in SQL Studio and I got also a big execution time.
    But if I try
    SELECT  "ROLLNAME" ,  "DOMNAME" ,  "HEADLEN" , "SCRLEN1" , "SCRLEN2" , "SCRLEN3"  FROM "DD04L" WHERE T_00 . "ROLLNAME" = 'VAL_TEXT' AND T_00 . "AS4LOCAL" = 'A'
    I get the result in 1 ms.
    Is there something wrong in the inner join?
    What does it mean the operation "REOPEN"?
    How can I see from ST05 if an index has been used?
    Thanks & Regards,
    Tommaso

  • What is left join /right join / out join/ inner join/please give example!

    what is left join /right join / out join/ inner join/please give example!
    thanks

    Maybe these examples will give you an idea...
    SQL> select * from t1;
            ID
             1
             2
             3
             4
    SQL> select * from t2;
            ID
             3
             4
             5
             6
    -- LEFT OUTER JOIN
    SQL> select t1.id, t2.id
      2  from t1 LEFT OUTER JOIN t2 ON (t1.id = t2.id);
            ID         ID
             3          3
             4          4
             1
             2
    -- RIGHT OUTER JOIN
    SQL> select t1.id, t2.id
      2  from t1 RIGHT OUTER JOIN t2 ON (t1.id = t2.id);
            ID         ID
             3          3
             4          4
                        6
                        5
    -- LEFT JOIN (SAME AS LEFT OUTER JOIN)
    SQL> ed
    Wrote file afiedt.buf
      1  select t1.id, t2.id
      2* from t1 LEFT JOIN t2 ON (t1.id = t2.id)
    SQL> /
            ID         ID
             3          3
             4          4
             1
             2
    -- RIGHT JOIN (SAME AS RIGHT OUTER JOIN)
    SQL> ed
    Wrote file afiedt.buf
      1  select t1.id, t2.id
      2* from t1 RIGHT JOIN t2 ON (t1.id = t2.id)
    SQL> /
            ID         ID
             3          3
             4          4
                        6
                        5
    -- INNER JOIN (REGULAR JOIN)
    SQL> ed
    Wrote file afiedt.buf
      1  select t1.id, t2.id
      2* from t1 INNER JOIN t2 ON (t1.id = t2.id)
    SQL> /
            ID         ID
             3          3
             4          4
    -- FULL OUTER JOIN
    SQL> ed
    Wrote file afiedt.buf
      1  select t1.id, t2.id
      2* from t1 FULL OUTER JOIN t2 ON (t1.id = t2.id)
    SQL> /
            ID         ID
             3          3
             4          4
             1
             2
                        6
                        5
    6 rows selected.
    SQL>

  • Why Inner join or Outer join is not used for Pool or Cluster tables  ?

    Hi SAP-ABAP Experts .
    With Due Regards .
    May u explain me why Inner join or Outer join is not useful for Pool or Cluster tables  ?
    because peoples advised not use Joins for Pool and Cluster tables , What harm will take place , If we do this ?
    Best Regards to all : Rajneesh

    Both Pooled and Cluster Tables are stored as tables within the database. Only the structures of the two table types which represent a single logical view of the data are defined within the ABAP/4 Data Dictionary. The data is actually stored in bulk storage in a different structure. These tables are commonly loaded into memory (i.e., 'buffered') due to the fact they are typically used for storing internal control information and other types of data with little or no external (business) relevance.
    Pooled and cluster tables are usually used only by SAP and not used by customers, probably because of the proprietary format of these tables within the database and because of technical restrictions placed upon their use within ABAP/4 programs. On a pooled or cluster table:
    Secondary indexes cannot be created.
    You cannot use the ABAP/4 constructs select distinct or group by.
    You cannot use native SQL.
    You cannot specify field names after the order by clause. order by primary key is the only permitted variation.
    I hope it helps.
    Best Regards,
    Vibha
    Please mark all the helpful answers

  • Why is outer join more expensive than inner joins.

    Why is outer join more expensive than inner joins.
    Other than it may return more rows.
    If you know of any ORA docs on this, please let me know.
    Thanks.

    Outer join is inner join with outer union applied on top of it. As you correctly observed it returns more rows and that alone makes it more expensive. Secondly, outer join is not commutative. As a result some join permutations are exclused from consideration, which results in higher cost.

  • How to find Inner join or (Left)outer join for Infoset

    Dear Experts,
    We have one Infoset which is based on the Master data and DSO. It is linked 0BPARTNER field From the Master Data and SOLD TO PARTY field from the DSO.
    Here Could you please suggest me how can we able to find that whether this Infoset is based on Inner Join or (Left) outer join.
    Thanks and Regards,
    Suresh.

    HI Suresh,
    If the infoset is based on left outer join , you see the respective table shaded in a dirrerent colour and also displays
    that it is a left outer join in the connection
    refer the below link for the details on left outer join , you can make a join as left outer from the context menu of the
    object required
    http://help.sap.com/erp2005_ehp_04/helpdata/EN/21/af0942b9dc9c39e10000000a155106/frameset.htm
    Regards,
    Sathya

  • Inner join and outer join

    hi friends,
    how to use inner join and outer join methods in abap. pls explain

    you have to code them
    Seriously, I suggest you take an ABAP class, it's out of the scope of this forum to tech you how to program joins.
    Markus

  • Inner join Vs Outer join with ABAP code...?

    Inner join Vs Outer join with ABAP code...?

    Inner Join means, it will not select that recor at all, unless there is a matching entry in the second table.
    suppose table VBAK INNER join table VBAP on VBAKVBELN = VBAPVBELN.
    In this case, if there are no entries in VBAP, the header entry also will not show up.
    But in case of OUTER JOIN, even if there is no items, it will show the header entry(VBAK) with blank columns for fields  from item table.(VBAP)
    here is one sample for inner join.
    SELECT   A~EBELN
               A~EKORG
               A~EKGRP
               A~BSART
               A~LPONR
               A~LOEKZ
               A~LIFNR
               A~RESWK
               B~AEDAT
               B~WERKS
               B~MATNR
               B~MENGE
               B~EBELP
               B~ELIKZ
               B~PLIFZ
               B~PSTYP
               B~KNTTP
               B~MATKL
               B~ZZD_PLANT
               FROM EKKO AS A INNER JOIN EKPO AS B
               ON
               AEBELN = BEBELN
               INTO CORRESPONDING FIELDS OF TABLE T_DATA
               FOR ALL ENTRIES IN T_EKET
               WHERE
               A~EBELN EQ T_EKET-EBELN AND
               A~BSART EQ C_UBSTO      AND
               A~EKORG IN S_EKORG      AND
               A~EKGRP IN S_EKGRP      AND
               A~BSTYP EQ C_BSTYP      AND
               A~LOEKZ EQ SPACE        AND " Order not deleted
               A~RESWK IN S_RESWK      AND
               B~EBELN EQ T_EKET-EBELN AND
               B~EBELP EQ T_EKET-EBELP AND
               B~WERKS IN S_WERKS      AND
               B~MATNR IN S_MATNR      AND
               B~MATKL IN S_MATKL      AND
               B~LOEKZ EQ SPACE.           " Line item not deleted

  • Outer join/inner join

    I have 4 related tables and want to join them all but can't
    figure out how to do it. Here are the columns that need to join:
    Table 1: EventID, PromoterID
    Table 2: EventID, LeagueID
    Table 3: LeagueID
    Table 4: PromoterID
    I want to join like this:
    Table2.EventID *= Table1.EventID and
    Table2.PromoterID = Table4.PromoterID and
    Table2.LeagueID = Table3.LeagueID
    But I can't do an outer and inner join on the same table.
    Events can have multiple leagues related to it. If I use
    inner joins for everything, it turns out okay until you search for
    an event by League - if that happens and the event has more than
    one related league, the search results will only show the league
    searched by and not all the other related leagues. If you search by
    other info like month or year, all leagues related to a particular
    event show up in the search results for each event. When I try to
    do an outer join on table 2 based on eventid, I then get stuck
    trying to join table 2 and table 3.
    This is probably a simple problem but my brain is feeling too
    fried to figure it out - can anyone help? Thanks!!

    You can also pull in the eventids based on leagues if your
    SQL engine supports subqueries.
    where
    Table2.EventID = Table1.EventID and
    Table2.PromoterID = Table4.PromoterID and
    Table2.LeagueID = Table3.LeagueID
    <cfif isdefined("form.leagueid")>
    <cfif trim(form.leagueid) neq ''>
    and table2.eventid in
    (select t2a.eventid from table2 t2a
    where t2a.eventid = table2.eventid
    and t2a.leagueid = '#form.leagueid#')
    </cfif>
    </cfif>
    <cfif isdefined("form.eventid")>
    <cfif trim(form.eventid) neq ''>
    and table2.eventid = '#form.eventid#'
    </cfif>
    </cfif>
    <cfif isdefined("form.promoterid")>
    <cfif trim(form.promoterid) neq ''>
    and table2.prompterid = '#form.promoterid#'
    </cfif>
    </cfif>
    ...

  • Inner join and outer  join in infosets

    hi everyone,
    i have a doubt in infosets...
    when and why we use inner and outer joins(right outer join and left outer join) for infoset
    please give a real time scenario........
    Thanks in advance.
    Bye.

    Hello,
    Inner join:
    For example, the requirement is to show all sales documents where you have delivery exists. In this case, you join both sales ods and delivery ods in a infoset as inner join. This will match the record against the reference documents and pull only matched records.  
    Outer Join:
    Suppose you want to pull all billing/invoice details along with their FI documents related data in a report. Assume that always there might be a situation that invoice exists but not posted to FI, however, you want to have all billing documents details either it has FI document or not. In this case, you link both Billing data and FI document data in a outer join.  This will pull all invoices data either FI document exists or not.   Other words, you want to show one side of data always but adding additional details from differenent source if data exists.
    Hope, it clarifies your doubt. Let me know if any questions.
    Thanks
    Viswa

  • How  to  do inner join ,outer join, left join ,right join by using infoset

    how  to  do inner join ,outer join, left join ,right join by using infoset

    Hi
    If you want to make  join ,outer join, left join ,right join then its possible if you are using ODS or direct infoobject (In BW3.5) and if you are using BI7.0 then you also make join ,outer join, left join ,right join with Cube also.
    For making join ,outer join, left join ,right join in infosets you just select your info provider then right click on your infoarea from context menu select info set after doing this one pop-up opens here u define your infoset technical name and give either ODS object name of infoobject name.
    After doing this next screen opens in right hand side your selectes ODS or infoobject shows in graphical format .
    and left hand side it shows one menu bar here you can select another ODS or infoobject for making join ,outer join, left join ,right join .just click on ODS button in menu bar and select ODS drag your selected ODS from Left to right after doing this your selected ODS shown in right hand side window in graphical format you just now after doing this you are able to make join ,outer join, left join ,right join for this first you select field from one ods and drag a line from 1 ods to second ods after doing this one arrow is created from one ods to another ods just right click on arrow  and make join ,outer join, left join ,right join in to your ODS.
    I think its clear how we can we make join ,outer join, left join ,right join in infoset.If you have any further query then welcome.
    Assign Points...............
    Thanks and regards
    Ankit modi

Maybe you are looking for