2017-12-21 13 views
-2

以下の要件に従って選択クエリが必要です。Oracle重複したエントリのない2つの異なるテーブルからの結合クエリ

Table 1: 

    DEVICEID MobileNo DealerCode FNAME LNMAE 
    1   1234  11   test test 
    2   1234  11   TEST tESt 

Table 2: 

    DealerCode DEALERNAME 
    11   JON 
    12   DOE 

Output: 

    MobileNo DealerCode NAME  DEALERNAME 
    1234  11   test test JON 

私に同じ質問をしてください。

+1

誰かがそれがうまくSO値下げでレンダリングされたようにデータをフォーマットする手間がかかりました。その後、あなたの編集内容は再び読むことができなくなりました。お願い、それはやめて。 – APC

答えて

0

あなたのデータ "エントリが重複することなく、" は、重複したエントリが含まれていません。 UID(deviceid)があり、各行にfnamelnameの異なる値が含まれています。大文字と小文字は区別されますが、Oracle RDBMSでは大文字と小文字が区別されます(デフォルト)。したがって、これらの行は異なります。

アプリケーションにmobilenoに固有のキーが必要なのかもしれませんか?その場合は、ルールを指定して、どの行をキーにするか、どの行を破棄するかを選択する必要があります。したがって、このような何か:

select p.mobileno 
     , p.dealercode 
     , p.fname || ' ' || p.lname as name 
     , d.dname as dealername 
from phone p 
    join dealer d 
      on d.dealercode = p.dealercode 
where p.deviceid = (select min(x.deviceid) 
        from phone x 
        where x.mobileno = p.mobileno) 
/     
0

何かがあなたのために働くはずです。あなたの選択クエリで

SELECT MIN (MobileNo) MobileNo, 
     MIN (a.DealerCode) DealerCode, 
     MIN (FNAME || ' ' || LNMAE) NAME, 
     MIN (b.DEALERNAME) DEALERNAME 
    FROM Table1 a JOIN Table2 b ON a.DealerCode = b.DealerCode; 
0

使用明確なキーワード。それはすべきです。

select distinct t1.mobile_no, t1.dealer_code, t1.fname, t1.lname, t2.delear_name 
from table1 t1 
join table2 t2 on t1.dealer_code = t2.dealer_code; 
0

それはtable2table1ためのルックアップテーブルであると思われるのDealerCode(と私はそれがtable2の主キーの列だと仮定してtable2指摘table1の外部キーを持っているのDealerCode列を)。その後、あなたはtoo_many_rows例外なくこれを試すことがあります。

SELECT t1.mobileno, t1.dealercode, lower(t1.fname||' '||t1.lnmae) name, 
     (select t2.dealername from table2 t2 where dealercode = t1.dealercode) dealername 
    FROM Table1 t1 
    GROUP BY t1.mobileno, t1.dealercode, lower(t1.fname||' '||t1.lnmae); 
関連する問題