INNER JOIN vs WHERE (+) rating

I am trying to determine the best way to write joins in Oracle. I'm a guy from SQL Server, and I'm used to writing

Select t1.c1 from table1 t1 INNER JOIN table2 t2 ON t1.c1 = t2.c1

I have been informed that the Oracle compiler prefers the sign (+) rating to join columns in which the clause. I have also been informed that Oracle has deprecated notation plue for INNER JOIN scoring in 10g. What is the real answer?

I personally never did a comparison of performance between the two.

I've always preferred the ANSI rating because I think it is more descriptive than the Oracle outer join notation.

Tags: Database

Similar Questions

  • How to do an INNER JOIN subquery?

    Can't seem to find anything that could help out me with this.
    My prototype query goes like this but its gives me an ORA-00905: lack of keyword


    SELECT Poker_Site.site_name, bonus.sign_up_bonus
    OF poker_site
    INNER JOIN bonus
    WHERE Poker_site.site_name = 'Poker Stars'
    WE Poker_Site.site_name = bonus.site_name;

    Join INNER JOIN must be immediately followed by ONE and only then, where:

    SELECT Poker_Site.site_name, bonus.sign_up_bonus
    FROM poker_site
    INNER JOIN bonus
    ON Poker_Site.site_name = bonus.site_name
    WHERE Poker_site.site_name = 'Poker Stars';
    

    SY.

  • difference between Inner Join join natural r

    Experts,

    I'm trying to understand the difference between Natural Join and inner join.

    Inner join: the following query provides 106 lines based on two tables

    SQL > SELECT EMPLOYEE_ID EID, last NAME, DEPT_NAME DEPARTMENT_NAME

    2 EMPLOYEES A, B MINISTRIES

    3. WHERE A.DEPARTMENT_ID = B.DEPARTMENT_ID

    4 order employee_id;

    Natural Join: This is the combination or combined result of all the columns in both tables.

    When I run the Sub statement, it combines employees and the table from department of a HR schema and provides only 32 ranks

    SQL > select employe_id, first_name, department_name

    2 departments of NATURAL JOIN employees;


    EMPLOYEE_ID NAME DEPARTMENT_NAME

    ----------- -------------------- -------------------

    Neena 101 Executive

    Lex 102 Executive

    104 Bruce IT

    David 105 HE

    question: why the NATURAL JOIN query omit the employee_id 103 and on what basis it omit a few other employee_id

    Thanks in advance

    Hello

    The main difference is that INNER JOIN is used in real life; NATURAL JOIN is used only in textbooks.

    More rigorously, FRANCKLIN JOIN is an inner join, involving all the columns that have the same name.  The hr.departments and hr.employees have 2 columns with the same name: department_id and manager_id, so

    OF hr.departments d

    NATURAL JOIN e hr.employees

    is equivalent to

    OF hr.departments d

    INNER JOIN hr.employees e ON e.department_id = d.deparment_id

    AND e.manager_id = d.manager_id

    or, using the old join syntax

    OF hr.departments d

    e hr.employees

    WHERE e.department_id = d.deparment_id

    AND e.manager_id = d.manager_id

  • I would like to convert a subselect to use an inner join?

    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0
    I have the SQL below (it gives the correct data) using several sub selects I want to use in a PS query via the PS request handler. However, Manager queries PS will only a sub select when you create a query, but it will allow an inner join. So, I was hoping to rewrite it as a join but can not understand. Perhaps using a view would work? Or if it happens to be expert PS9.1 out there who might know an effcient way more to create the query that would be great as well. I have several versions of different trails of my SQL inner join if someone wishes to see those.
    select business_unit,
           ledger,
           fund_code,
           account,
           foreign_amount,
           open_item_key
      from ps_open_item_gl a
     where (business_unit, ledger, fund_code, account) in
           (select business_unit, ledger, fund_code, account
              from (select business_unit,
                           ledger,
                           fund_code,
                           account,
                           sum(foreign_amount)
                      from ps_open_item_gl b
                     where b.open_item_status = 'O'
                     group by business_unit, fund_code, account, ledger
                    having sum(foreign_amount) = 0))
       and open_item_status = 'O'
       and business_unit not in ('4110', '5301', '6501', '6602')
     order by 1, 2, 3, 4, 6 

    Hello

    956171 wrote:
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0
    I have the SQL below (it gives the correct data) using several sub selects I want to use in a PS query via the PS request handler. However, Manager queries PS will only a sub select when you create a query, but it will allow an inner join. So, I was hoping to rewrite it as a join but can not understand.

    I don't know what you mean by "select sub", or what exactly is the PS limitation.
    Are you talking about the query nested in the IN clause? It is not necessary. The following is equivalent to what you posted:

    select business_unit,
           ledger,
           fund_code,
           account,
           foreign_amount,
           open_item_key
      from ps_open_item_gl a
     where (business_unit, ledger, fund_code, account) in
           (
               select    business_unit, ledger, fund_code, account
               from      ps_open_item_gl b
               where     b.open_item_status = 'O'
               and           business_unit  not in ('4110', '5301', '6501', '6602')
               group by  business_unit, ledger, fund_code, account
               having    sum (foreign_amount) = 0
           )
       and open_item_status = 'O'
     order by 1, 2, 3, 4, 6
    

    I move the condition 'and business_unit not in ('4110', '5301', '6501', 6602') ' in the subquery just for efficiiency.

    I think you would need a subquery, even if you don't re - he writes as a join.

    Perhaps using a view would work?

    No doubt. Again, I know not what PS objects to, but you can probably hide in a vision where the PS can complain about this.

  • inner join is not eliminating duplicates!

    Name of the table is customers

    VALUE CITY SIDE NUMS CNAME
    1 2001 Hoffman 100 1001 London
    2 Rome 2002 200 1003 Giovanni
    3 2003 Liu San Jose 200 1002
    4 2004 grass Berlin 300 1002
    5 2006 Clemens 100 1001 London
    6 2008 Cisneros San Jose 300 1007
    7 2007 perish Rome 100 1004

    Query is
    To find all pairs of customers having the same side

    I tried:

    SELECT c.cname, cb.cname FROM customers c INNER JOIN customers cb WE cb.rating AND c.cname = c.rating! = cb.cname

    CNAME CNAME
    1 perish Hoffman
    2 Clemens Hoffman
    3 Liu Giovanni
    4 Giovanni Liu
    5 Cisneros grass
    6 perira Clemens
    7 Hoffman Clemens
    8 grass Cisneros
    Clemens 9 perish
    10 Hoffman perish


    Ideally, it should up to 5 rows, but it does not return these lines for an e.g. Hoffman perish since I'm Perira Hoffman already. Your answers will be appreciated.

    Thank you
    Vaibhav

    Hi, Vaibhav,

    914683 wrote:
    Name of the table is customers

    VALUE CITY SIDE NUMS CNAME
    1 2001 Hoffman 100 1001 London
    2 Rome 2002 200 1003 Giovanni
    3 2003 Liu San Jose 200 1002
    4 2004 grass Berlin 300 1002
    5 2006 Clemens 100 1001 London
    6 2008 Cisneros San Jose 300 1007
    7 2007 perish Rome 100 1004

    Query is
    To find all pairs of customers having the same side

    I tried:

    SELECT c.cname, cb.cname FROM customers c INNER JOIN customers cb WE cb.rating AND c.cname = c.rating! = cb.cname

    Perhaps what you want is

    SELECT      c.cname
    ,         cb.cname
    FROM          customers  c
    INNER JOIN  customers  cb  ON   c.rating  = cb.rating
                                       AND  c.cname       < cb.cname     -- not !=
    ;
    

    CNAME CNAME
    1 perish Hoffman
    2 Clemens Hoffman
    3 Liu Giovanni
    4 Giovanni Liu
    5 Cisneros grass
    6 perira Clemens
    7 Hoffman Clemens
    8 grass Cisneros
    Clemens 9 perish
    10 Hoffman perish

    The title you chose for this thread is "inner join is not eliminating duplicates!
    Inner joins (or other types of joints) are not supposed to remove duplicates. Use SELECT DISTINCT to remove duplicates, which is exactly the same lines.
    You don't have to duplicate. For example, these lines of your result set:

    `        CNAME     CNAME
    1     Perira     Hoffman
    10     Hoffman     Perira
    

    are not identical; Indeed, the two columns are different.

    Ideally, it should up to 5 rows, but it does not return these lines for an e.g. Hoffman perish since I'm Perira Hoffman already.

    Please report the exact output of the sample data you want. (As said by Hoek, post CREATE TABLE and INSERT statements for the sample data too.)

  • Issue of inner joins

    Hi all
    I have a few tables with samples as:
    CREATE OR REPLACE TABLE hotel
    ( 
         hotel_id             int  NOT NULL ,
         hotel_name           varchar2(50)  NULL ,
         hotel_address        varchar2(100)  NULL
    );
    
    CREATE OR REPLACE TABLE people_type
    ( 
         people_type_id       int  NOT NULL ,
         type_des             varchar2(30)  NOT NULL
    );
    
    CREATE OR REPLACE TABLE hotel_people
    ( 
         hotel_id                int  NOT NULL ,
         people_type_id      int  NOT NULL ,
         age_min                int  NULL ,
         age_max               int  NULL
    );
    
    CREATE OR REPLACE TABLE hotel_service
    ( 
         hotel_id              int  NOT NULL ,
         qty_room             int  NOT NULL ,
         qty_people           int  NOT NULL,
         qty_people_extra      int  NOT NULL
    );
    
    insert into hotel(hotel_id, hotel_name, hotel_address)
    values(1,'hotel1','hotel1 address1');
    insert into hotel(hotel_id, hotel_name, hotel_address)
    values(2,'hotel2','hotel2 address2');
    insert into hotel(hotel_id, hotel_name, hotel_address)
    values(3,'hotel3','hotel3 address3');
    insert into hotel(hotel_id, hotel_name, hotel_address)
    values(4,'hotel4','hotel4 address4');
    
    insert into people_type (people_type_id, type_des)
    values (1,'Baby');
    insert into people_type (people_type_id, type_des)
    values (2,'Young');
    insert into people_type (people_type_id, type_des)
    values (3,'Adult');
    
    insert into hotel_people (hotel_id, people_type_id, age_min, age_max)
    values (1,1,0,2);
    insert into hotel_people (hotel_id, people_type_id, age_min, age_max)
    values (1,2,3,10);
    insert into hotel_people (hotel_id, people_type_id, age_min, age_max)
    values (1,3,11,200);
    
    insert into hotel_people (hotel_id, people_type_id, age_min, age_max)
    values (2,2,3,17);
    insert into hotel_people (hotel_id, people_type_id, age_min, age_max)
    values (2,3,18,200);
    
    insert into hotel_people (hotel_id, people_type_id, age_min, age_max)
    values (3,3,18,200);
    
    insert into hotel_people (hotel_id, people_type_id, age_min, age_max)
    values (4,1,0,2);
    insert into hotel_people (hotel_id, people_type_id, age_min, age_max)
    values (4,2,3,10);
    insert into hotel_people (hotel_id, people_type_id, age_min, age_max)
    values (4,3,11,200);
    
    insert into hotel_service (hotel_id, qty_room, qty_people,qty_people_extra)
    values (1,10,2,1);
    insert into hotel_service (hotel_id, qty_room, qty_people,qty_people_extra)
    values (1,5,4,0);
    insert into hotel_service (hotel_id, qty_room, qty_people,qty_people_extra)
    values (2,6,2,1);
    insert into hotel_service (hotel_id, qty_room, qty_people,qty_people_extra)
    values (2,12,3,1);
    insert into hotel_service (hotel_id, qty_room, qty_people,qty_people_extra)
    values (3,10,2,1);
    insert into hotel_service (hotel_id, qty_room, qty_people,qty_people_extra)
    values (3,5,4,0);
    insert into hotel_service (hotel_id, qty_room, qty_people,qty_people_extra)
    values (4,6,2,1);
    insert into hotel_service (hotel_id, qty_room, qty_people,qty_people_extra)
    values (4,12,3,1);
    As you can see I have Hotels with basic information, persons of type hotel_people (1:baby, 2:young and 3:Adult), which contains the type of people that each hotel can accommodate with min max age and hotel_service that contains the info from the number of rooms and the amount of people that can be in each room.
    I'm trying to get the records that match my condition as:
    1. I want to get the hotels that can accommodate 4 pieces with adults of 3 for each room.
    2 get hotels that can accommodate 6 rooms 2 where 2 of the bedrooms can have 1 young (3 people per room) and young people 9 years.

    For 1:
    select h.hotel_id, h.hotel_name, ss.qty_room, t.type_des, ss.qty_people, p.age_min, p.age_max
    from hotel h
    inner join hotel_service ss on h.hotel_id = ss.hotel_id
    inner join hotel_people p on h.hotel_id = p.hotel_id
    inner join people_type t on p.people_type_id = t.people_type_id
    where ss.qty_room >= 4
    and t.people_type_id = 3
    and ss.qty_people >= 3
    For 2:
    select h.hotel_id, h.hotel_name, ss.qty_room, t.type_des, ss.qty_people, p.age_min, p.age_max
    from hotel h
    inner join hotel_service ss on h.hotel_id = ss.hotel_id
    inner join hotel_people p on h.hotel_id = p.hotel_id
    inner join people_type t on p.people_type_id = t.people_type_id
    where ss.qty_room >= 6
    and ss.qty_people >= 3
    and t.people_type_id in (2,3)
    and 9 between p.age_min and p.age_max
    This does not work, the start of the query becomes more complex if I try to search for multiple rooms with a different number of people and children of different ages.
    Can anyone help with this?
    Thank you

    Published by: user9542267 on April 3, 2012 22:26

    Hello

    user9542267 wrote:
    ... Yes, what I need is a hotel that can accommodate TWO adults and youth. What do you mean by two copies?

    Right now I read something on the Grand Duke by Gilbert. I also have a book with the complete works of Gilbert, so I can leave it open, and when I see a reference in the commentary, I see exactly what the author is talking about in the book. However, when the comment compares some parts of this game to the other plays of Gilbert, The Yeomen of the Guard , it gets hard, because I have to keep changing the pages in the complete works, and I can't see both at the same time. It would be much easier if I could get a full second copy of the work; then I could leave a copy of the Grand Duke and leave the other copy open to The Yeomen of the Guard . This is similar to what you should do with the table of hotel_people, and what I do with the table scott.emp below.

    Imagine (using tables in the scott schema) you have to find the departments where both an analyst and a clerk to work.
    This:

    SELECT DISTINCT
              d.*
    FROM       scott.dept     d
    JOIN       scott.emp     e  ON     d.deptno     = e.deptno
    WHERE       job          IN ('ANALYST', 'CLERK')
    ORDER BY  d.deptno
    ;
    

    product

    DEPTNO DNAME          LOC
    ------ -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
    

    because all these departments have either an analyst or a clerk. However, only deptno = 20 a time .
    If, instead of a single table of big job, you have a separate table for each Olympic Games, then you might do something like this:

    SELECT DISTINCT
              d.*
    FROM       scott.dept     d
    JOIN       analyst     a  ON     d.deptno     = a.deptno
    JOIN       clerk          c  ON     d.deptno     = c.deptno
    ORDER BY  d.deptno
    ;
    

    Of course, you don't have tables separated like that, but you could generate result sets who behaved as separte tables, for example:

    WITH     analyst          AS
    (
         SELECT  *
         FROM     scott.emp
         WHERE     job     = 'ANALYST'
    )
    ,     clerk          AS
    (
         SELECT  *
         FROM     scott.emp
         WHERE     job     = 'CLERK'
    )
    SELECT DISTINCT
              d.*
    FROM       scott.dept     d
    JOIN       analyst     a  ON     d.deptno     = a.deptno
    JOIN       clerk          c  ON     d.deptno     = c.deptno
    ORDER BY  d.deptno
    ;
    

    Note that the main request is exactly what I posted earlier.
    What produces the right output:

    DEPTNO DNAME          LOC
    ------ -------------- -------------
        20 RESEARCH       DALLAS
    

    There is no need to actually generate separate result sets, however. You can use two copies of the table scott.emp in the same query, as follows:

    SELECT DISTINCT
              d.*
    FROM       scott.dept     d
    JOIN       scott.emp     a  ON     d.deptno     = a.deptno
    JOIN       scott.emp     c  ON     d.deptno     = c.deptno
    WHERE       a.job          = 'ANALYST'
    AND       c.job          = 'CLERK'
    ORDER BY  d.deptno
    ;
    
  • Help with Inner join problem

    The following query works fine as long as there is a value in the subID field, which is the end of the inner join statement. If the subID is empty then no data is output, even if it is there. Try as I may, I can't do the right solution in which the statement to get the data to show without the subID. What Miss me?

    < name cfquery = "getInfo" datasource = "#application.database #" >

    Select page_id, pageName, pages.content, pages.cat_id, pages.seo_title, pages.seo_desc, pages.seo_words, pages.h1_title, pages.pic, pages.brochure, pa ges.video, catagories.catagory, subcat.subID, subcat.sub_category

    (page INNER JOIN categories ON pages.cat_id = catagories.cat_id) INNER JOIN subcat ON pages.subID = subcat.subID

    where pages.page_id = #page_id #.

    < / cfquery >

    Rick,

    Looks like you need a LEFT OUTER join to the table "subcat", so that all the records for the 'pages' and 'categories' are returned, even if no records matching "subcat" doesn't exist.  Joins INTERNAL returns only the selected records when both sides of the join statement tables have matching values, while you will get a join OUTER LEFT (sometimes also known simply as a LEFT JOIN) * everything * selected records from the table on the left side of the join statement, no matter if he adapt records from the table on the right side of the join statement.  When there is no corresponding record in the table on the right side of the join statement, all the columns in your SELECT clause that come from the table on the right side of the join statement will contain NULL values.

    HTH,

    -Carl V.

  • Update with INNER JOIN

    Hello

    My update with the inner join does not seem to work.

    UPDATE RECAP R SET R.FLAVOR = (SELECT FN. FLAVOR_NDC FN FLAVOR, REPLACE CAP R WHERE R.NDC11 = FN. NDC11)

    When I write the query above, the inner circle question (SELECT FN. FLAVOR_NDC FN FLAVOR, REPLACE CAP R WHERE R.NDC11 = FN. NDC11) returns multiple lines, and it's a new syntax for me (as I was Teradata and SQL server).

    Can you please how this request can be written to make it work?

    I get the error message below

    SQL error: ORA-01427: einreihig subquery returns multiple rows
    01427 00000 - "einreihig subquery returns several lines.

    1. fix your code:

    UPDATE RECAP R SET R.FLAVOR = (SELECT FN.FLAVOR FROM FLAVOR_NDC FN WHERE R.NDC11 = FN.NDC11)
    

    2. you can use the fusion

    merge into RECAP R
    using FLAVOR_NDC FN
    on(R.NDC11 = FN.NDC11)
    when matched then
         update
         set R.FLAVOR = FN.FLAVOR
    

    Kind regards
    Malakshinov Sayan

  • Urgent help please.  Inner join caused the error ora-00933

    I ran it, works great:
    SELECT DIFFERENT EXP. EXP_ID,
    EXP. DATU_EXP_WIRE_CENTER_CLLI,
    EXP. DATU_EXP_IP,
    EXP. DATU_EXP_CLLI,
    EXP. DATU_EXP_PORT,
    EXP. DATU_EXP_NAME,
    EXP. DATU_EXP_CITY,
    EXP. DATU_EXP_STATE,
    EXP. DATU_EXP_SW_VERSION,
    DECODE (LAST_ALARM. LAST_ALARM_DATE, NULL, TO_CHAR (SYSDATE, ' YYYY/MM/DD HH24:MI:SS'),
    TO_CHAR (LAST_ALARM. LAST_ALARM_DATE, "YYYY/MM/DD HH24:MI:SS")) AS STATUS_DATE,
    DECODE (LAST_ALARM. ALARM_NAME, NULL, "disconnected", LAST_ALARM. ALARM_NAME) AS DATU_STATUS,
    DECODE (LAST_ALARM. ALARM_CLASS, NULL, 'OTHER', LAST_ALARM. ALARM_CLASS) AS IS_ERROR_STATUS,

    DECODE (LAST_RESOURCE. LAST_ALARM_DATE, NULL, ", TO_CHAR (LAST_RESOURCE. LAST_ALARM_DATE, "YYYY/MM/DD HH24:MI:SS")) AS RESOURCE_STATUS_DATE,
    DECODE (LAST_RESOURCE. RESOURCE_CODE_NAME, NULL, ", LAST_RESOURCE. RESOURCE_CODE_NAME) AS RESOURCE_STATUS,
    DECODE (LAST_RESOURCE. RESOURCE_CODE_CLASS, NULL, ", LAST_RESOURCE. RESOURCE_CODE_CLASS) AS IS_RESOURCE_ERROR_STATUS,
    DECODE (LAST_OPER. LAST_ALARM_DATE, NULL, ", TO_CHAR (LAST_OPER. LAST_ALARM_DATE, "YYYY/MM/DD HH24:MI:SS")) AS OPER_STATUS_DATE,
    DECODE (LAST_OPER. OPER_CODE_NAME, NULL, ", LAST_OPER. OPER_CODE_NAME) AS OPER_STATUS,
    DECODE (LAST_OPER. OPER_CODE_CLASS, NULL, ", LAST_OPER. OPER_CODE_CLASS) AS IS_OPER_ERROR_STATUS,

    EXP BEGIN_MAINT_WINDOW, RTU. RTU_NAME
    OF TT_DATU_EXP_UNIT_INFO EXP
    left outer join
    (SELECT distinct alarmed_datus. EXP_ID, c.ALARM_NAME, c.ALARM_TYPE, c.ALARM_CLASS and alarmed_datus. LAST_ALARM_DATE
    Of alarmed_datus (SELECT EXP_ID, MAX (ALARM_TIME) AS LAST_ALARM_DATE FROM TT_DATU_EXP_ALARM_INFO GROUP BY EXP_ID)
    inner join TT_DATU_EXP_ALARM_INFO b on b.EXP_ID = alarmed_datus. EXP_ID AND b.ALARM_TIME = alarmed_datus. LAST_ALARM_DATE
    inner join TT_DATU_EXP_ALARM_TYPES c on b.ALARM_TYPE = c.ALARM_TYPE
    ) LAST_ALARM on EXP.. EXP_ID = LAST_ALARM. EXP_ID
    left outer join
    (SELECT distinct a.EXP_ID, c.RESOURCE_CODE_NAME, c.RESOURCE_CODE_TYPE, c.RESOURCE_CODE_CLASS, a.LAST_ALARM_DATE
    FROM (SELECT EXP_ID, MAX (RESOURCE_CODE_TIME) AS LAST_ALARM_DATE
    OF TT_DATU_EXP_RESOURCE_CODE_INFO GROUP BY EXP_ID) a
    inner join TT_DATU_EXP_RESOURCE_CODE_INFO b on b.EXP_ID = a.EXP_ID AND b.RESOURCE_CODE_TIME = a.LAST_ALARM_DATE
    inner join TT_DATU_EXP_RESOURCECODE_TYPES c on b.RESOURCE_CODE_TYPE = c.RESOURCE_CODE_TYPE
    ) LAST_RESOURCE on EXP.. EXP_ID = LAST_RESOURCE. EXP_ID
    left outer join
    (SELECT distinct a.EXP_ID, c.OPER_CODE_NAME, c.OPER_CODE_TYPE, c.OPER_CODE_CLASS, a.LAST_ALARM_DATE
    FROM (SELECT EXP_ID, MAX (OPER_CODE_TIME) AS LAST_ALARM_DATE
    OF TT_DATU_EXP_OPER_CODE_INFO GROUP BY EXP_ID) a
    inner join TT_DATU_EXP_OPER_CODE_INFO b on b.EXP_ID = a.EXP_ID AND b.OPER_CODE_TIME = a.LAST_ALARM_DATE
    inner join TT_DATU_EXP_OPER_CODE_TYPES c on b.OPER_CODE_TYPE = c.OPER_CODE_TYPE) LAST_OPER on EXP.. EXP_ID = LAST_OPER. EXP_ID
    inner join TT_DATU_LRN_MAP on exp. EXP_ID = NAB NAB. EXP_ID AND TRIM (NAB. LRN) AS p_LRN
    inner join TT_RTU_TYPES on exp. RTU_TYPE_ID = RTU RTU. RTU_TYPE_ID
    WHERE THERE IS NOT (SOME SATELLITE_EXP_ID OF TT_HOST_SATELLITE WHERE EXP. EXP_ID = SATELLITE_EXP_ID)
    AND EXP.IS_PRIMARY_ADDRESS LIKE p_isPrimary;
    ON THE OTHER
    OPEN FOR V_cursor
    SELECT EXP. EXP_ID,
    EXP. DATU_EXP_WIRE_CENTER_CLLI,
    EXP. DATU_EXP_IP,
    EXP. DATU_EXP_CLLI,
    EXP. DATU_EXP_PORT,
    EXP. DATU_EXP_NAME,
    EXP. DATU_EXP_CITY,
    EXP. DATU_EXP_STATE,
    EXP. DATU_EXP_SW_VERSION,
    DECODE (LAST_ALARM. LAST_ALARM_DATE, NULL, TO_CHAR (SYSDATE, ' YYYY/MM/DD HH24:MI:SS'), TO_CHAR (LAST_ALARM. LAST_ALARM_DATE, "YYYY/MM/DD HH24:MI:SS")) AS STATUS_DATE,
    DECODE (LAST_ALARM. ALARM_NAME, NULL, "disconnected", LAST_ALARM. ALARM_NAME) AS DATU_STATUS,
    DECODE (LAST_ALARM. ALARM_CLASS, NULL, 'OTHER', LAST_ALARM. ALARM_CLASS) AS IS_ERROR_STATUS,

    DECODE (LAST_RESOURCE. LAST_ALARM_DATE, NULL, ", TO_CHAR (LAST_RESOURCE. LAST_ALARM_DATE, "YYYY/MM/DD HH24:MI:SS")) AS RESOURCE_STATUS_DATE,
    DECODE (LAST_RESOURCE. RESOURCE_CODE_NAME, NULL, ", LAST_RESOURCE. RESOURCE_CODE_NAME) AS RESOURCE_STATUS,
    DECODE (LAST_RESOURCE. RESOURCE_CODE_CLASS, NULL, ", LAST_RESOURCE. RESOURCE_CODE_CLASS) AS IS_RESOURCE_ERROR_STATUS,
    DECODE (LAST_OPER. LAST_ALARM_DATE, NULL, ", TO_CHAR (LAST_OPER. LAST_ALARM_DATE, "YYYY/MM/DD HH24:MI:SS")) AS OPER_STATUS_DATE,
    DECODE (LAST_OPER. OPER_CODE_NAME, NULL, ", LAST_OPER. OPER_CODE_NAME) AS OPER_STATUS,
    DECODE (LAST_OPER. OPER_CODE_CLASS, NULL, ", LAST_OPER. OPER_CODE_CLASS) AS IS_OPER_ERROR_STATUS,

    EXP BEGIN_MAINT_WINDOW, RTU. RTU_NAME
    OF TT_DATU_EXP_UNIT_INFO EXP
    (in left outer join
    SELECT distinct alarmed_datus. EXP_ID, c.ALARM_NAME, c.ALARM_TYPE, c.ALARM_CLASS and alarmed_datus. LAST_ALARM_DATE
    Of alarmed_datus (SELECT EXP_ID, MAX (ALARM_TIME) AS LAST_ALARM_DATE FROM TT_DATU_EXP_ALARM_INFO GROUP BY EXP_ID)
    inner join TT_DATU_EXP_ALARM_INFO b on b.EXP_ID = alarmed_datus. EXP_ID AND b.ALARM_TIME = alarmed_datus. LAST_ALARM_DATE
    inner join TT_DATU_EXP_ALARM_TYPES c on b.ALARM_TYPE = c.ALARM_TYPE)
    LAST_ALARM on EXP.. EXP_ID = LAST_ALARM. EXP_ID
    left outer join
    (SELECT distinct a.EXP_ID, c.RESOURCE_CODE_NAME, c.RESOURCE_CODE_TYPE, c.RESOURCE_CODE_CLASS, a.LAST_ALARM_DATE
    FROM (SELECT EXP_ID, MAX (RESOURCE_CODE_TIME) AS LAST_ALARM_DATE
    OF TT_DATU_EXP_RESOURCE_CODE_INFO GROUP BY EXP_ID) a
    inner join TT_DATU_EXP_RESOURCE_CODE_INFO b on b.EXP_ID = a.EXP_ID AND b.RESOURCE_CODE_TIME = a.LAST_ALARM_DATE
    inner join TT_DATU_EXP_RESOURCECODE_TYPES c on b.RESOURCE_CODE_TYPE = c.RESOURCE_CODE_TYPE) LAST_RESOURCE on EXP.. EXP_ID = LAST_RESOURCE. EXP_ID
    left outer join
    (SELECT distinct a.EXP_ID, c.OPER_CODE_NAME, c.OPER_CODE_TYPE, c.OPER_CODE_CLASS, a.LAST_ALARM_DATE
    FROM (SELECT EXP_ID, MAX (OPER_CODE_TIME) AS LAST_ALARM_DATE
    OF TT_DATU_EXP_OPER_CODE_INFO GROUP BY EXP_ID) a
    inner join TT_DATU_EXP_OPER_CODE_INFO b on b.EXP_ID = a.EXP_ID AND b.OPER_CODE_TIME = a.LAST_ALARM_DATE
    inner join TT_DATU_EXP_OPER_CODE_TYPES c on b.OPER_CODE_TYPE = c.OPER_CODE_TYPE
    ) LAST_OPER on EXP.. EXP_ID = LAST_OPER. EXP_ID ORDER BY EXP. DATU_EXP_CLLI
    inner join TT_RTU_TYPES on exp. RTU_TYPE_ID = RTU RTU. RTU_TYPE_ID
    WHERE THERE is NOT (SOME SATELLITE_EXP_ID OF TT_HOST_SATELLITE WHERE EXP.. EXP_ID = SATELLITE_EXP_ID) AND EXP.IS_PRIMARY_ADDRESS love
    p_isPrimary;


    However this one:

    SELECT EXP. EXP_ID,
    EXP. DATU_EXP_WIRE_CENTER_CLLI,
    EXP. DATU_EXP_IP,
    EXP. DATU_EXP_CLLI,
    EXP. DATU_EXP_PORT,
    EXP. DATU_EXP_NAME,
    EXP. DATU_EXP_CITY,
    EXP. DATU_EXP_STATE,
    EXP. DATU_EXP_SW_VERSION,
    DECODE (LAST_ALARM. LAST_ALARM_DATE, NULL, TO_CHAR (SYSDATE, ' YYYY/MM/DD HH24:MI:SS'),
    TO_CHAR (LAST_ALARM. LAST_ALARM_DATE, "YYYY/MM/DD HH24:MI:SS")) AS STATUS_DATE,
    DECODE (LAST_ALARM. ALARM_NAME, NULL, "disconnected", LAST_ALARM. ALARM_NAME) AS DATU_STATUS,
    DECODE (LAST_ALARM. ALARM_CLASS, NULL, 'OTHER', LAST_ALARM. ALARM_CLASS) AS IS_ERROR_STATUS,


    DECODE (LAST_RESOURCE. LAST_ALARM_DATE, NULL, ", TO_CHAR (LAST_RESOURCE. LAST_ALARM_DATE, "YYYY/MM/DD HH24:MI:SS")) AS RESOURCE_STATUS_DATE,
    DECODE (LAST_RESOURCE. RESOURCE_CODE_NAME, NULL, ", LAST_RESOURCE. RESOURCE_CODE_NAME) AS RESOURCE_STATUS,
    DECODE (LAST_RESOURCE. RESOURCE_CODE_CLASS, NULL, ", LAST_RESOURCE. RESOURCE_CODE_CLASS) AS IS_RESOURCE_ERROR_STATUS,
    DECODE (LAST_OPER. LAST_ALARM_DATE, NULL, ", TO_CHAR (LAST_OPER. LAST_ALARM_DATE, "YYYY/MM/DD HH24:MI:SS")) AS OPER_STATUS_DATE,
    DECODE (LAST_OPER. OPER_CODE_NAME, NULL, ", LAST_OPER. OPER_CODE_NAME) AS OPER_STATUS,
    DECODE (LAST_OPER. OPER_CODE_CLASS, NULL, ", LAST_OPER. OPER_CODE_CLASS) AS IS_OPER_ERROR_STATUS,


    EXP BEGIN_MAINT_WINDOW, RTU. RTU_NAME
    OF TT_DATU_EXP_UNIT_INFO EXP
    left outer join
    (
    SELECT distinct alarmed_datus. EXP_ID, c.ALARM_NAME, c.ALARM_TYPE, c.ALARM_CLASS and alarmed_datus. LAST_ALARM_DATE
    Of alarmed_datus (SELECT EXP_ID, MAX (ALARM_TIME) AS LAST_ALARM_DATE FROM TT_DATU_EXP_ALARM_INFO GROUP BY EXP_ID)
    inner join TT_DATU_EXP_ALARM_INFO b on b.EXP_ID = alarmed_datus. EXP_ID AND b.ALARM_TIME = alarmed_datus. LAST_ALARM_DATE
    inner join TT_DATU_EXP_ALARM_TYPES c on b.ALARM_TYPE = c.ALARM_TYPE) LAST_ALARM on EXP.. EXP_ID = LAST_ALARM. EXP_ID

    left outer join
    (SELECT distinct a.EXP_ID, c.RESOURCE_CODE_NAME, c.RESOURCE_CODE_TYPE, c.RESOURCE_CODE_CLASS, a.LAST_ALARM_DATE
    FROM (SELECT EXP_ID, MAX (RESOURCE_CODE_TIME) AS LAST_ALARM_DATE
    OF TT_DATU_EXP_RESOURCE_CODE_INFO GROUP BY EXP_ID) a
    inner join TT_DATU_EXP_RESOURCE_CODE_INFO b on b.EXP_ID = a.EXP_ID AND b.RESOURCE_CODE_TIME = a.LAST_ALARM_DATE
    inner join TT_DATU_EXP_RESOURCECODE_TYPES c on b.RESOURCE_CODE_TYPE = c.RESOURCE_CODE_TYPE) LAST_RESOURCE on EXP.. EXP_ID = LAST_RESOURCE. EXP_ID
    left outer join
    (SELECT distinct a.EXP_ID, c.OPER_CODE_NAME, c.OPER_CODE_TYPE, c.OPER_CODE_CLASS, a.LAST_ALARM_DATE
    FROM (SELECT EXP_ID, MAX (OPER_CODE_TIME) AS LAST_ALARM_DATE
    OF TT_DATU_EXP_OPER_CODE_INFO GROUP BY EXP_ID) a
    inner join TT_DATU_EXP_OPER_CODE_INFO b on b.EXP_ID = a.EXP_ID AND b.OPER_CODE_TIME = a.LAST_ALARM_DATE
    inner join TT_DATU_EXP_OPER_CODE_TYPES c on b.OPER_CODE_TYPE = c.OPER_CODE_TYPE
    ) LAST_OPER on EXP.. EXP_ID = LAST_OPER. EXP_ID ORDER BY EXP. DATU_EXP_CLLI
    inner join TT_RTU_TYPES on exp. RTU_TYPE_ID = RTU RTU. RTU_TYPE_ID
    WHERE the EXP.IS_PRIMARY_ADDRESS as p_isPrimary;

    It does not work kept send me errors:
    [ORA-00933: SQL not correctly completed command]


    Any guru can help? I need to have this resolved effect today.
    Thanks in advance.
  • Difference between Inner join and right outer join...

    Which is precisely the difference between an Inner join and right outer join...

    JOIN INTERNAL:-to return all rows from the two tables where there is a football game. That is to say. the table resulting from all the rows and columns will have values.

    AND

    RIGHT OUTER JOIN:-Returns all rows in the second table, even if there is no match in the first table.

  • helps the inner join

    Hi all

    I am trying to learn something new, and I'm having a little difficulty.  I'm trying to learn more about inner joins.  I looked at countless books, tutorials, and all the rest have that I can find, but I can't seem to understand that.  Nothing I try works.

    I have related tables, and I try to get the data to display.  I have the database set up as follows:

    films (table name) has the movie_id, movie_name and movie_star_rating fields

    family_rating (table name) has star_id, star_name, and star_file_name fields

    in PHPMyAdmin, I had movies.movie_star_rating internally associated with family_rating.star_id

    When I view the data, I'm pulling the table of movies, but instead of having a number, I would like to have displayed family_rating.star_name.  I have the following code to do this:

    $query="SELECT * FROM movies
      INNER JOIN family_rating ON movies.movie_star_rating=family_rating.star_id 
      WHERE movies.movie_name_series='$search'";
    
    $result= mysql_query($query)or die (mysql_error());
    
    while($row=mysql_fetch_array($result)){
    
    // Display the data 
    
     echo $row['movies.movie_name'];
     echo $row['family_rating.star_file_name'];
    }
    


    Can someone let me know what I am doing wrong?  Thanks for your help.

    $query = "SELECT * FROM movies, family_rating"
    INNER JOIN family_rating ON movies.movie_star_rating = family_rating.star_id
    WHERE movies.movie_name_series = '$search';

    OK, that SQL is not the same as your original post.

    > Not unique table/alias: 'family_rating '.

    This tells us what's wrong. You specify the two tables after the from clause. Try again with your original query:

    $query = "SELECT * FROM movies"
    INNER JOIN family_rating ON movies.movie_star_rating = family_rating.star_id
    WHERE movies.movie_name_series = '$search';

  • problem with a query, inner join

    Hello;

    I am trying innerjoin these 2 tables in my request for a page that will allow you to add / modify records. Right now, it tells me that I have a lag of data. I do not see where I was wrong. Can someone help me?


    This is my code:

    < name cfparam = "url. CategoryID"type ="integer"default ="0">
    < name cfparam = 'subID' type = 'integer' default = '#url. CategoryID #">"
    < name cfparam = "subName" default = "" >
    < name cfparam = "CategoryID" default = "" >
    < name cfparam = "Name" default = "" >

    < cfif url. CategoryID GT 0 >
    < name cfquery = "categRec" dataSource = "#APPLICATION.dataSource #" >
    SELECT merchSubCat.subName, merchSubCat.subID, categories. CategoryID, Categories.Name
    OF merchSubCat
    JOIN INTERNAL categories
    ON merchSubCat.CategoryID = categories. CategoryID
    WHERE merchSubCat.subID = < cfqueryparam value = '#url. "CategoryID #" cfsqltype = "cf_sql_integer" >
    < / cfquery >

    <!-if the records were found, store the values->
    < cfif categRec.RecordCount EQ 1 >
    < cfset CategoryID = categRec.subID >
    < cfset subName = categRec.subName >
    < cfset CategoryID = categRec.CategoryID >
    < cfset Name = categRec.Name >
    < / cfif >
    < / cfif >

    It's my mistake:

    Run database query error.

    [Macromedia] [SequeLink JDBC Driver] [ODBC Socket] [Microsoft] [ODBC Microsoft Access driver] Type in an expression mismatch.
    The error occurred in C:\Websites\187914kg3\admin\cms\merchant\merchSub-edit.cfm: line 16

    14 : INNER JOIN Categories
    15 :     ON merchSubCat.CategoryID = Categories.CategoryID
    16 : WHERE merchSubCat.subID = <cfqueryparam value="#url.CategoryID#" cfsqltype="cf_sql_integer">
    17 : </cfquery>
    18 : 
    

    I don't see what I did wrong, another pair of eyes can see where I missed something?

    Thank you

    I think that you just want to use the URL. CategoryID parameter:


    Ken Ford

  • The first mention of an inner join of return?

    I searched all over the internet a response for that, but I had no luck so far.

    Select a.*, BOXES_TABLE a b.Part_Name
    inner join PARTS_IN_THE_BOXES_TABLE b on b.BOX_id = a.BOX_id I can modify only this line
    where a.BOX.id = 1234

    Anyway is to limit the inner join to return only one record? I can't use a where statement for her clause.

    I want to return a part name of the largest number in a box, but I can't seem to write a join that will not return everything in this area, because the only id I have is for boxes, and many parts may have the same id box.

    Some may show me this, I'll be the King of work tomorrow.

    You can encapsulate another query autour the big one scary? Something like:

    SELECT box_id, col2, col3, part_name
    FROM (SELECT box_id, col2, col3, part_name,
                 ROW_NUMBER() OVER(PARTITION BY box_id ORDER BY NULL) rn
          FROM (big scary query)
          WHERE box_id IN (b1, b2, b3))
    WHERE rn = 1
    

    This will return a "random" part in each area. If you have a preference for which part fate, try changing the ORDER OF NULL make favorite part come first in the list

    John

  • Help of query SQL - inner joins and the separate results

    Hello

    ASP VB, SQL Server

    I have a structure of data base with 3 tables - users, albums and photos. each user has a identifier unique, each record has a unique albumid and also contains a column with the user name. each record in the photo has a unique id so that store the user name and the album in which the image belongs.

    I'm writing a query that returns a list of the albums for a particular user (based on a user name query string) and who will also bring back the id of the first record in the table for each of these albums photo.

    the closest I get is to run a query to select albumid albums where userid = varuserid with a join internal on the pictures table to remove the photo ID - problem I then it comes out all the photos from the photos table where userid = varuserid, so when I do a repeat region to display a list of albums for a certain user It produces a list of all the photos where userid = varuserid

    I really want to return just a list of ID album based on the username variable, but also to return the first record in the table of photos for each of these albumids

    I tried different combinations of inner joins, select distinct etc but no joy.

    any suggestion would be appreciated as am floundering here...




    First, you must define 'first' with regard to the photos. Is there a
    timestamp? They are numbered inside the album? Do you really care who is
    "first", or do you want simply a shot? You also neglected to indicate if they are
    empty photo albums have been allowed. I assumed that the empty albums are not
    allowed.

    Whatever you decide, the answer will be similar.
    SQL Server tends to get better results with joins with subqueries. You will have
    See such a written request more often with subqueries, and there isn't
    nothing wrong with that, but I'll use a join on a derived table. I have
    have not all column names (hint, hint), so I made them, but the
    Comments should help out you.

    SELECT A.Title, P.PhotoID, P.Caption, A.AlbumID, P.ImagePath
    FROM dbo. A albums
    -build a table derived, consisting of photo ID lowest for each
    album.
    INNER JOIN (SELECT AlbumID, MIN (PhotoID) AS FirstPhoto FROM dbo. Photos
    AlbumID GROUP) AS PM WE A.AlbumID = PM. AlbumID
    -details of the photo for the photo shown in the table above
    INNER JOIN dbo. Photos P on A.AlbumID = P.AlbumID AND
    H. FirstPhoto = P.PhotoID
    User A.UserID ='some WHERE '

    "tedstar" wrote in message
    News:ee4pfn$de$1@forums. Macromedia.com...
    > I am writing a query that returns a list of the albums for a
    > particular user (based on a user name query string) and also bring
    > return
    > the id of the first record in the table for each of these albums photo.

  • Join/to/where/combine queries2

    Hello
    I need help again once on the inner join / and stipulations in where clause

    I have these 2 tables tcase and tcase_req where he common field is the case_id.
    Tcase is the parent table and the tcase_req is the child table.

    (1) I wanted to add this to the clause using the inner join table. what I do and where do I put

    (2) then, I need to replace a condition in where clause
    WHERE TCASE. CASE_NBR Like '% HPOZ % '.
    AND TCASE. CASE_NBR = 'DIR-2004-4269-HPOZ-CCMP.
    by
    WHERE TCASE. CASE_NBR like '% ACC %' or TCASE. CASE _NBR Like '% CWNC % '.
    AND TCASE. CASE_NBR = 'DIR-2004-4269-CWC ".
    Or TCASE. CASE_NBR = 'DIR-2004-4269-CWNC.

    is it effective?



    (3) for a tcase_req
    Suffix_id are equal to = ACC and cwnc (in table (tcase_req) (Suffix_id is the field that cintains the suffix ACC and cwnc for the tcase_req)

    Where to add?

    Below is the current request: Thank YOU
    ------------------------------------------------------------------------------------------ --------------

    SELECT TLA_PROP. PIN,
    TLA_PROP. ASSR_PRCL_NBR,
    TCASE. CASE_NBR,
    TLA_PROP. STR_NBR,
    TLA_PROP. STR_NBR_RNG_END,
    TLA_PROP. STR_FRAC_NBR,
    Tref_plan_area.plan_area_desc
    TLA_PROP. STR_FRAC_NBR_RNG_END,
    TLA_PROP. STR_DIR_CD,
    TLA_PROP. STR_NM,
    TLA_PROP. STR_SFX_CD,
    TLA_PROP. STR_SFX_DIR_CD,
    TLA_PROP. STR_UNIT_TYP_CD,
    TLA_PROP. UNIT_NBR,
    TLA_PROP. UNIT_NBR_RNG_END,
    TLA_PROP. ZIP_CD,
    TLA_PROP. ZIP_CD_SFX,
    TLA_PROP. CNCL_DIST_NBR,
    TLA_PROP. PLAN_AREA_NBR,
    TLA_PROP. ZONE_REG_CD,
    TAPLC. PROJ_DESC_TXT,
    TCASE. CASE_ID,
    TCASE. CASE_NBR,
    taplc.aplc_id
    OF TLA_PROP
    INNER JOIN tref_plan_area ON tla_prop.plan_area_nbr = tref_plan_area.plan_area_NBR
    INNER JOIN TLOC ON TLA_PROP. PROP_ID = TLOC. LOC_ID
    INNER JOIN TAPLC ON TLOC. APLC_ID = TAPLC. APLC_ID
    INNER JOIN TCASE ON TAPLC. APLC_ID = TCASE. APLC_ID
    WHERE TCASE. CASE_NBR Like '% HPOZ % '.
    AND TCASE. CASE_NBR = 'DIR-2004-4269-HPOZ-CCMP.

    If you want to use OR terms AND conditions, you must use parentheses:
    WHERE (TCASE. CASE_NBR like '% ACC %' or TCASE. CASE _NBR Like '% CWNC %')
    AND (TCASE. CASE_NBR = 'DIR-2004-4269-CWC ".
    Or TCASE. CASE_NBR = "DIR-2004-4269-CWNC")

    But if you're really hardcode the values of number if you're wasting time with a LIKE comparison so you might just have:
    WHERE TCASE. CASE_NBR = 'DIR-2004-4269-CWC ".
    Or TCASE. CASE_NBR = 'DIR-2004-4269-CWNC.

    You might get a better response is if not at least more readable code with:

    WHERE TCASE. CASE_NBR in ('DIR-2004-4269-CWC','DIR-2004-4269-CWNC')

Maybe you are looking for