use the ansi join syntax

From what I've been reading is preferable to use the new syntax (don't know how is it news)

The ANSI join syntax was new to Oracle in Oracle 8i in 1998 - that is 15 years old.

It can produce more readable code and is also much more readable and less human-source of errors for outer joins.

The ANSI format allows an outer join between several tables in a way the old (+) syntax specific to oracle does not and introduced the JOIN FULL OUTER you should use very rarely.

You should not use NATURAL JOIN in code - add columns not related to the tables involved can give very different results.

There have not been important bugs for ANSI joins in Oracle from Oracle 10.2 set up about 8 years ago.

As Paul says, the part on should be the criteria to join between the tables. Did clause should be the filtering of the joined tables.

So assuming start_date and end_date in_property_id are variable

SELECT resv_num, unit_date

OF p_resv_unit ru

INNER JOIN p_pm_unit_night pun

ON pun.resv_unit_id = ru.resv_unit_id

WHERE pun.property_id = in_property_id

AND pun.unit_date BETWEEN start_date AND end_date

AND pun.pm_unit_num = cvUnitNum;

If start_date and end_date are the columns of p_resv_unit the query would be:

SELECT resv_num, unit_date

OF p_resv_unit ru

INNER JOIN p_pm_unit_night pun

ON pun.resv_unit_id = ru.resv_unit_id AND pun.unit_date BETWEEN ru.start_date AND ru.end_date

WHERE pun.property_id = in_property_id

AND pun.pm_unit_num = cvUnitNum;

Inner join queries work with criteria in the wrong place, but they are harder to read. Outer joins do not work unless you put the criteria in the right place.

Tags: Database

Similar Questions

  • Need help with the ANSI Join syntax

    Version: 11.1.0.7

    I have my select statement that returns 3000 lines and looks like
    select ..
    from tab1 a,tab2 b,tab3 c
    where a.c1=b.c1 and
    b.c2 = c.c2(+)
    and ...
    group by
    ..
    I want to convert it to ANSI SQL, because it must be able to Hibernate, and the developer says that Hibernate include only ANSI SQL. I tried something like
    select ..
    from tab1 a INNER JOIN tab2 b
    ON a.c1=b.c1 
    LEFT OUTER JOIN tab3 c
    ON b.c2=c.c2
    where ...
    group by
    ..
    I felt bad and it turned out to be the same. It returns no rows. Please help with the correct syntax.

    I'm not sure, sorry, because it's certainly the ANSI equivalent to the non-ANSI.

    Would you have examples of queries and data that you can reproduce the problem with, and that we could analyze?

    Published by: Seanmacgc on July 15, 2009 12:48

    If there is no Clause WHERE conditions in the original that are included in the ANSI version of the query in the WHERE Clause for the EXTERNAL table itself joined, then that could transform the JOIN JOIN internally, that is, all the filters on the EXTERNAL joined table should be included in the JOIN predicate - IT (b.c2 = c.2 AND c.c3 = 'X').

  • Need clarification on the ANSI joins

    Hi all

    I need some clarification on the ANSI join I am building to avoid an error when I try to run the same in standard join.

    With standard join, I get the error ORA-01417: a table can be external joined as another table.

    Regular join condition:
    Select null
    Of
    land_event_device_fraud dealer update,-T1
    land_event_device_upgrade T2, - New Subscriber first Set
    syn_intg_event_device_state T3, - subscribed existing
    land_event_device_upgrade T4 - new Subscriber Second Set
    WHERE T1.event_id = T2.event_id (+) AND T1.rate_plan_id = T2.rate_plan_id (+)
    AND T1.event_id = T3.event_id (+) AND T1.rate_plan_id = T3.rate_plan_id (+)
    AND T4.event_id = T1.event_id (+) AND T4.event_id = T1.rate_plan_id (+)
    AND T4.event_id = T3.event_id (+) AND T4.event_id = T3.rate_plan_id (+);

    -Get the error ORA-01417.

    Replaced the join above with ANSI join

    SELECT NULL
    OF land_event_device_fraud t1
    LEFT OUTER JOIN t2 land_event_device_upgrade
    WE (t1.event_id = t2.event_id AND t1.rate_plan_id = t2.rate_plan_id)
    LEFT OUTER JOIN syn_intg_event_device_state t3
    WE (t1.event_id = t3.event_id AND t1.rate_plan_id = t3.rate_plan_id).
    land_event_device_upgrade t4
    LEFT OUTER JOIN land_event_device_fraud t5
    WE (t4.event_id = t5.event_id AND t4.rate_plan_id = t5.rate_plan_id)
    LEFT OUTER JOIN syn_intg_event_device_state t6
    WE (t4.event_id = t6.event_id AND t4.rate_plan_id = t6.rate_plan_id);


    I want to know if the ANSI join is goig work properly or it will give me any Cartesian production information.

    Appreciate your help here.

    Thank you
    MK.

    Hello

    Maldini says:
    Hi all

    I need some clarification on the ANSI join I am building to avoid an error when I try to run the same in standard join.

    With standard join, I get the error ORA-01417: a table can be external joined as another table.

    Regular join condition:
    Select null
    Of
    land_event_device_fraud dealer update,-T1
    land_event_device_upgrade T2, - New Subscriber first Set
    syn_intg_event_device_state T3, - subscribed existing
    land_event_device_upgrade T4 - new Subscriber Second Set
    WHERE T1.event_id = T2.event_id (+) AND T1.rate_plan_id = T2.rate_plan_id (+)
    AND T1.event_id = T3.event_id (+) AND T1.rate_plan_id = T3.rate_plan_id (+)
    AND T4.event_id = T1.event_id (+) AND T4.event_id = T1.rate_plan_id (+)
    AND T4.event_id = T3.event_id (+) AND T4.event_id = T3.rate_plan_id (+);

    -Get the error ORA-01417.

    Replaced the join above with ANSI join

    SELECT NULL
    OF land_event_device_fraud t1
    LEFT OUTER JOIN t2 land_event_device_upgrade
    WE (t1.event_id = t2.event_id AND t1.rate_plan_id = t2.rate_plan_id)
    LEFT OUTER JOIN syn_intg_event_device_state t3
    WE (t1.event_id = t3.event_id AND t1.rate_plan_id = t3.rate_plan_id).
    land_event_device_upgrade t4
    LEFT OUTER JOIN land_event_device_fraud t5
    WE (t4.event_id = t5.event_id AND t4.rate_plan_id = t5.rate_plan_id)
    LEFT OUTER JOIN syn_intg_event_device_state t6
    WE (t4.event_id = t6.event_id AND t4.rate_plan_id = t6.rate_plan_id);

    You mix ANSI joins and the old joints. It's very confusing. Use all of one type or the other.
    >

    I want to know if the ANSI join is goig work properly or it will give me any Cartesian production information.

    What happens when try you it? Is it produces the results you want?

    Whenever you have any questions, post a small example of data (CREATE TABLE and INSERT statements) and the results desired from these data. Explain how you get these results from these data.
    Always tell what version of oracle you are using.
    See the FAQ forum {message identifier: = 9360002}

    Why the SELECT clause includes only NULL? Is that going to serve as an EXISTS subquery? If so, why bother to make the outer joins, and why do you care if it is a Cartesian product? What is the query to go for?
    For the purposes of debugging, you can include something that you see in the SELECT clause.

  • show on a monthly basis, using the outer join

    Hello

    I use an example of emp table to describe my problem here

    I made a request that is group by hiredate months and showing the sum of wages.

    as follows,

    Select
    TO_DATE (to_char(HireDate,'MON-RRRR'), MON-RRRR), sum (sal)
    Of
    EMP
    Group by
    TO_DATE (to_char(HireDate,'MON-RRRR'), MON-RRRR)
    SQL > /.

    TO_DATE (T SUM (SAL)
    --------- ----------
    FEBRUARY 1ST, 10 21000
    MARCH 1, 10 30000
    MAY 1, 10 43000
    1ST JUNE 10 70000

    what I want is to show also the months too where any recruitment made
    as
    month sum (sal)
    January 1 10 0
    FEBRUARY 1ST, 10 21000
    MARCH 1, 10 30000
    April 1, 10 0
    MAY 1, 10 43000
    1st June 10 0
    1ST JUNE 10 70000
    August 1 10 0
    0 01-sept.-10
    1 October 10 0
    1 November 10 0
    1 December 10 0

    I've tried doing another table with month AND use outer join, but failed to get the result

    any ideas will be appreciated

    Change the following query accordingly as directed by your data

    Select
    ADD_MONTHS (to_date (January 1, 2001 "," dd-MON-RRRR'), level - 1) MonthName
    Of
    Double
    connect by level<=>

    It gives data for 2001
    If your emp table is to have 2010 data while it was being replaced by add_months (to_date (January 1, 2010 "," dd-MON-RRRR'), level - 1) MonthName

    Alexander gelin
    http://nimishgarg.blogspot.com

    Edited by: Caroline Geffroy 10 June 2010 18:11

  • Notation in the table join syntax

    Hi all

    Out of curiosity I looked the SQL which is underlying the DBA_COMMON_AUDIT_TRAIL view, and I noticed something I'd never seen before...

    < snip >

    SGS $ XML_AUDIT_TRAIL xad, SYSTEM_PRIVILEGE_MAP spm,.

    SYSTEM_PRIVILEGE_MAP spx, aom STMT_AUDIT_OPTION_MAP, Bill AUDIT_ACTIONS

    where xad.action = act.action

    and - xad.statement_type = spm.privilege

    and xad.statement_type = aom.option #.

    and - xad.priv_used = spx.privilege

    < / snip >

    I am referring to the signs less between the AND and the alias of the table/view - 2nd and 4th lines in the WHERE clause above.

    Peut - some kind soul please help me with this notation?

    TIA,

    Steve

    Hello

    in the above query both the column data type is number. :V$ XML_AUDIT_TRAIL

    so we denotes a negative expression. as they are unary operators. You can use

    SQL > select count (*) from emp where - sal<>

    COUNT (*)

    ----------

    15

    HTH

  • using the dynamic SQL syntax

    I am trying to create a dynamic sql to execute the following statement:

    create the table mytbl_20100901 in select * from matbl double;

    When I try the following error I
    ORA-06550: line 6, column 10:
    PLS-00103: encountered the symbol "SELECT" at the expected in the following way:

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;
    declare
    sql_cmd varchar2 (1000);

    Start

    sql_cmd: = select "create table mytbl_ | To_char (sysdate, 'YYYYMMDD') | ' in select * from matbl ' double.

    immediately run sql_cmd;

    end;
    ;;;;;;;;;;;;;;;;;;;;;;;;;

    How to fix the sql_cmd assignment statement?

    Thank you.

    Hello

    user1035690 wrote:
    I am trying to create a dynamic sql to execute the following statement:

    create the table mytbl_20100901 in select * from matbl double;

    When I try the following error I
    ORA-06550: line 6, column 10:
    PLS-00103: encountered the symbol "SELECT" at the expected in the following way:

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;
    declare
    sql_cmd varchar2 (1000);

    Start

    sql_cmd: = select "create table mytbl_ | To_char (sysdate, 'YYYYMMDD') | ' in select * from matbl ' double.

    immediately run sql_cmd;

    end;
    ;;;;;;;;;;;;;;;;;;;;;;;;;

    How to fix the sql_cmd assignment statement?

    Thank you.

    The dual table is not necessary a lot in PL/SQL.
    You can simply say:

    sql_cmd := 'create table mytbl_' || TO_CHAR(sysdate, 'YYYYMMDD') || ' as select * from mytbl';
    dbms_output.put_line (sql_cmd || ' <= sql_cmd');
    -- EXECUTE IMMEDIATE sql_cmd;
    

    During the development of the dynamic SQL statements, I suggest that you post the command rather than run it first.
    When it seems correct, then a comment instructions EXECUTE IMMEDIATE.
    Before the Production code, remove or comment the call to out_line.

  • The ANSI syntax for the join 4 tables-is this correct?

    Hi, I'm new to these forums and I have looked everywhere and cannot find the syntax and examples on how to join the tables 2 and 3 using the ANSI standard, but I need to reach 4. For a traditional join, it would be:

    SELECT a.two b.one, b.three, b, a.one, d.seven
    Tablea, tableb b, c in tablec, deposited d
    WHERE a.one = b.one
    AND a.two = c.two
    AND c.six = d.six;

    Here are the tables:

    TableB
    one
    three
    four

    TableA
    one
    two

    TableC
    two
    six

    deposited
    six
    seven
    eight

    Anyone know how to do this by using an ANSI join or have all of the resources that can guide me in the right direction. I don't know if I wanted to join three tables, it would be:

    SELECT a.two b.one, b.three, b, a.one, c.six
    FROM tableb b JOIN tablea one WE b.one = a.one JOIN tablec c ON a.two = c.two;

    so join a fourth would:

    SELECT a.two b.one, b.three, b, a.one, d.seven
    FROM tableb b JOIN tablea one WE b.one = a.one JOIN tablec c ON a.two = d JOIN filed c.two ON c.six = d.six;?

    Is the above correct or is there another way to do this, use an ANSI join?

    Published by: user1076466 on October 17, 2009 17:40

    Hello

    your JOIN looks good,

    "FROM tableb b JOIN tablea one WE b.one = a.one JOIN tablec c ON a.two = d JOIN filed c.two ON c.six = d.six" you get a different result set?

    Thank you

  • Extract multiple lines using the technique of the cross join

    Hello.

    Can someone suggest a method to return 3 lines of a query when otherwise would return only one line?

    I am trying to reach the analog SQL logic to this topic-
    SELECT x.foo, p.id, p.name FROM people p CROSS JOIN (SELECT 1 AS foo UNION ALL SELECT 2 UNION ALL SELECT 3) x;
    Reason: I want a result three rows (n) force and use GROUP BY with case statements to create 3 levels summary.

    Here is a simple SQL logical expression that works for my setup - OBI
    SELECT
         "- Nx_CSDG0_Repair_Orders (Depot Repair Views)".Repair_Number saw_0,
         "- Nx_CSDG0_Repair_Orders (Depot Repair Views)".SR_Operating_Unit_Name saw_1
    FROM
         "[Noetix-NoetixGlobalRepository] NoetixViews for Oracle Service"     
    WHERE 
         ("- Nx_CSDG0_Repair_Orders (Depot Repair Views)".Repair_Number = '338246')
    But I think that I can't do--
    SELECT
         "- Nx_CSDG0_Repair_Orders (Depot Repair Views)".Repair_Number saw_0,
         "- Nx_CSDG0_Repair_Orders (Depot Repair Views)".SR_Operating_Unit_Name saw_1
    FROM
         "[Noetix-NoetixGlobalRepository] NoetixViews for Oracle Service"
         CROSS JOIN (SELECT 1 AS foo UNION ALL SELECT 2 UNION ALL SELECT 3)
    WHERE 
         ("- Nx_CSDG0_Repair_Orders (Depot Repair Views)".Repair_Number = '338246')
    But what peut do?

    Thank you.

    -cs

    Hi CSeelig,

    The BI server uses the ANSI SQL standard. Then all the SQL that follows this specification in OBIEE will work.

    I did an example with intensification:
    http://gerardnico.com/wiki/dat/OBIEE/logical_sql/obiee_sql_densification

    You will see a cross join to make a densification.

    See you soon
    Nico

  • Oracle: Inner join syntax

    Hello
    I am confused with Inner Join syntax.
    According to the defination of Inner Join, it is said that
    Inner joins return all rows in multiple tables satisfied the join condition.

    By the way by examples of inner join in web, join Inner is written in these syntaxes as indicated:

    First syntax:

    SELECT Person.LastName, Person.FirstName, person Sales.OrderNo INNER JOIN sales on Person.P_Id = Sales.P_Id

    Second syntax:

    SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
    FROM the suppliers orders
    WHERE suppliers.supplier_id = orders.supplier_id;

    Please tell me if the keyword Inner Join its use is mandatory or not?

    Thank you for reading.

    user672373773 wrote:
    First of all, thanks Anurag to your prompt response.

    I have a request here, please tell me why oracle has provided two syntax? This is the ANSI and non-ANSI syntax

    I know, it's the Oracle had a format no ANSI to join since its initial versions. In later versions, oracle decided to except ANSI format too since Oracle want to support the ansi format in almost everything.

    So since he was using the ansi non format, it can't support/stop using only for backward compatibility and also it as having the users to use the ansi format, it is both.

    Concerning
    Anurag

  • Bug in outer join syntax?

    I use Oracle 10.2, and I think I found a bug in what is allowed for the outer join syntax. Specifically, I am allowed to specify "outer join" without specifying if it's left, right, or full outer join. It behaves as an inner join.

    The documents show that the type_de_jointure is optional, but does not allow the 'outside' keyword be used alone: http://download.oracle.com/docs/cd/A97630_01/server.920/a96540/statements_103a.htm#2126207

    Small example:
    create table TABLE_A (ID number(10) primary key, VALUE_A varchar2(50));
    create table TABLE_B (ID number(10) primary key, VALUE_B varchar2(50));
    insert into TABLE_A (ID, VALUE_A) values (1, 'abc');
    insert into TABLE_A (ID, VALUE_A) values (2, 'def');
    insert into TABLE_A (ID, VALUE_A) values (3, 'ghi');
    insert into TABLE_B (ID, VALUE_B) values (2, 'jkl');
    insert into TABLE_B (ID, VALUE_B) values (3, 'mno');
    insert into TABLE_B (ID, VALUE_B) values (4, 'pqr');
    commit;
    select ID, VALUE_A from TABLE_A;
    select ID, VALUE_B from TABLE_B;
    select ID, VALUE_A, VALUE_B from TABLE_A join TABLE_B using (ID);
    select ID, VALUE_A, VALUE_B from TABLE_A full outer join TABLE_B using (ID);
    select ID, VALUE_A, VALUE_B from TABLE_A outer join TABLE_B using (ID);
    The release of the last three selects shows that the OUTER JOIN behaves as a simple JOIN, rather than return a syntax error or at least behave like a FULL OUTER JOIN (this is where the absence of a syntax error is misleading):
    SQL> select ID, VALUE_A, VALUE_B from TABLE_A join TABLE_B using (ID);
    
            ID VALUE_A                                            VALUE_B
    ---------- -------------------------------------------------- --------------------------------------------------
             2 def                                                jkl
             3 ghi                                                mno
    
    SQL> select ID, VALUE_A, VALUE_B from TABLE_A full outer join TABLE_B using (ID);
    
            ID VALUE_A                                            VALUE_B
    ---------- -------------------------------------------------- --------------------------------------------------
             1 abc
             2 def                                                jkl
             3 ghi                                                mno
             4                                                    pqr
    
    SQL> select ID, VALUE_A, VALUE_B from TABLE_A outer join TABLE_B using (ID);
    
            ID VALUE_A                                            VALUE_B
    ---------- -------------------------------------------------- --------------------------------------------------
             2 def                                                jkl
             3 ghi                                                mno
    
    SQL> 
    Y at - there somewhere that I can tell you that?

    If you have a supported Oracle agreement you can save a Service request with Oracle, but they can answer that this is not a bug. The problem is that the 'outside' keyword in your 3rd example is treated as an alias for TABLE_A because it is not considered as a reserved keyword.

    with table_a as (
    select 1 as id, 'abc' as value_a from dual union all
    select 2 as id, 'def' as value_a from dual union all
    select 3 as id, 'ghi' as value_a from dual
    
    )
    , table_b as (
    select 2 as id, 'jkl' as value_b from dual union all
    select 3 as id, 'mno' as value_b from dual union all
    select 4 as id, 'pqr' as value_b from dual
    )
    select ID, outer.VALUE_A, VALUE_B from TABLE_A outer join TABLE_B using (ID);
    
    ID                     VALUE_A VALUE_B
    ---------------------- ------- -------
    2                      def     jkl
    3                      ghi     mno
    

    If you query the view RESERVED_WORDS of V$ it will tell you what keywords are reserved.

    select * from V$RESERVED_WORDS where keyword in ('OUTER', 'SELECT','USING');
    
    KEYWORD                        LENGTH                 RESERVED RES_TYPE RES_ATTR RES_SEMI DUPLICATE
    ------------------------------ ---------------------- -------- -------- -------- -------- ---------
    USING                          5                      N        N        N        N        N
    OUTER                          5                      N        N        N        N        N
    SELECT                         6                      Y        N        N        N        N
    

    You'll get a similar result, if you tried

    select ID, VALUE_A, VALUE_B from TABLE_A using join TABLE_B using (ID);
    

    Kind regards
    Bob

  • Need help, unable to connect to the ODBC database using the SQL Toolbox!

    Hi all

    I'm playing around with the evaluation of SQL Toolkit (2.2 + patch) and I'm having trouble.

    I ran the example 'connect' program and it seems to work fine.

    However, I try to write my own program, and I get the same message:

    "Service connection BD: (return value ==-10 [0xFFFFFFF6])."

    Native error - 2147467259 code 0x80004005

    The message is different from time to time, but the return value is constant.

    I use Microsoft SQL Server 2012 and MySQL.

    For MySQL, I installed the last Connector ODBC, 5.3.4. Inside the Control Panel / Data Sources (ODBC), I have a DSN called test_mysql in DSN user and system DSN.

    I ran a test on the connection and the test passes. I don't know if I have to use the ansi or unicode driver, I tried both with the same success.

    I do not know I had properly configured the SQL Server connection and who will try again.

    My Code CVI is quite simple:

    hdbc = connection BD ("DSN = test_mysql");

    Whenever I get a - 10 BD. Either I have something configured wrong or am I missing something.

    Does anyone have any suggestions?

    Update 2:

    After getting off the phone with Technical Support, the problem has been identified!

    LabWindows SQL Toolkit requires 32 bits DNS. My PC is a 64-bit, so my default DNS Manager in 64-bit.

    I needed to use the DNS Manager 32-bit when you work with the box tool.

    Once I created my DNS connections using the 32-bit version of the Datga ODBC Source manager, everything worked fine.

    See this technical note:

    http://digital.NI.com/public.nsf/allkb/E7984C0DA0F0E65086257694005B4CB7

  • The list of permissions of the files using the command line

    Hi all

    My windows operating system is windows Server 2003 R2.

    Now, I'm trying to find a solution that can display all the permissions of the file of each folder and its subdirectory by using the command line syntax.
    I tried to use ICACLS to solve this problem, but its result contains the permissions of all files/folders. I just want to have the permission of files, not the permissions of each individual files.

    Is it possible to just show the permissions of folders with ICACLS? If it is possible, what sentence from command line?

    However, I also looked at Systinterals AccessChk and AccessEnum without finding a solution.

    If you have no good solution, please share with me.

    Advanced thanks.

    Hi Leo,

    The question you have posted is related to file permissions in Server 2003 and it would be better suited to the TechNet community.

    Please visit the link below to find a community that will provide the support you want.

    http://social.technet.Microsoft.com/forums/en-us/winserversecurity/threads

    Hope it will be useful.

  • old script with joins instead of ansi joins

    In 9i OWB when I generate the intermediate result script, it is generateing join in the OLD style as conditions below.
    a.ID = b.id (+)

    But in Oracle 11 g, it raises the join conditions in the Ansi joins as below
    a left outer join b on (a.id = b.id)


    Is there a way to generate the intermediate result script in an old style in OWB 11 g?

    Help, please.

    I did a quick post here showing ownership.
    https://blogs.Oracle.com/warehousebuilder/entry/owb_ansi_and_oracle_sql

    See you soon
    David

  • Functions the discoverer of the elements using the full name?

    Hello everyone,

    I had a problem today using the discoverer administrator, while creating an element using a Trim function on the element used in the condition of the reports, when I check the SQL code, it uses the fully qualified name that is SYS. STANDARD. Trim (Item) instead of just the TRIM (ITEM) which makes a huge difference in the duration of the query.

    For example:

    Items in the folder:
    CHECK_CODE1, CHECK_CODE2, CHECK_CODE3

    New item you want:
    ALLCHECKCODES = TRIM (CHECK_CODE1) | » _'|| TRIM (CHECK_CODE2) | » _'|| TRIM (CHECK_CODE3)

    Condition:
    ALLCHECKCODES LIKE '% 1234% '

    This is the Sql that is generated:

    Select...
    Of
    < table_name >
    where
    SYS. STANDARD. TRIM (CHECK_CODE1) | » _'|| SYS. STANDARD. TRIM (CHECK_CODE2) | » _'|| SYS. STANDARD. TRIM (CHECK_CODE3) LIKE '% 1234% ';

    With the creation of element when I create a condition using the Trim function it is displayed correctly:

    ... where
    TRIM (CHECK_CODE1) | » _'|| TRIM (CHECK_CODE2) | » _'|| TRIM (CHECK_CODE3) LIKE '% 1234% ';

    Is it possible that we delimit the Discoverer administrator to build the regular element using Trim instead of the fully qualified name for the function?

    Enjoy your entries and your advice.

    Thank you.

    Vlaminck

    Hello

    The problem is that the TRIM does not use the syntax of the standard setting and therefore normally does not appear in the EUL. If the PAD has been imported into the EUL then you might find the TRIM function in Disco administrator under Save the PL/SQL functions and then remove the SYS and the STANDARD of the owner and package.

    Otherwise, I should just use LTRIM (RTRIM (.)) like LTRIM and RTRIM use the normal parameter syntax.

    Rod West

  • Must use the nested left join syntax?

    I am currently an editing view. The view has one with a followed left join to an inner join such as this:

    Select
    T1.a,
    T2.b,
    T3.c
    Of
    (select 1 as a Union double all the)
    Select 2 as double
    ) t1
    left join
    (select 1A, 11 b of all the double union)
    Select 2A, 12 b of the double
    ) t2
    on t1.a = t2.a
    Join
    T3 (select 11 b, 14-c double)
    on t2.b = t3.b;
    / * - Try out: -.
    A, B AND C
    ------- ------- -------
    1-11-14
    */

    The inner join converts left join in an inner join "de facto"? should I use nested join syntax in order to get the other ranks:

    Select
    T1.a,
    T2.b,
    T3.c
    Of
    (select 1 as a Union double all the)
    Select 2 as double
    ) t1
    left join
    (select 1A, 11 b of all the double union)
    Select 2A, 12 b of the double
    ) t2
    on t1.a = t2.a
    Join
    T3 (select 11 b, 14-c double)
    on t2.b = t3.b;
    / * - Try out: -.
    A, B AND C
    ------- ------- -------
    1-11-14
    */

    Sorry, just saw your last join condition now:

    on t2.b = t3.b;
    

    This results in a JOIN INTERNAL to the EXTERNAL table JOINED to, will certainly lead to a result of diminshed set - not quite the same that forced an INNER JOIN, but the result is the same, Yes. So there are indeed of equivalence.

    This, however, would not have resulted a reduced resultset:

    on t1.a = t3.a;
    

    But of course it is not possible, since the t3 has a column "a".

Maybe you are looking for