sql >> データベース >  >> RDS >> Mysql

mysql-1つのプロバイダーテーブルから2つの個別のプロバイダー名を表示します

    これを使用できます:

    select se.svcid, p1.pname as serviceprovider, p2.pname as tmidprovider
    from tmid t
    inner join (select sno, max(svcid) as maxsvcid from service group by sno) s 
      on t.sno = s.sno and t.`default` = 'Y'
    inner join service se on se.svcid = s.maxsvcid
    left join provider p1 on se.pid = p1.pid
    left join provider p2 on t.pid = p2.pid;
    

    テーブル

    create table service (svcid int, sno varchar(20), pid int);
    insert into service values 
    (1, '11-11-11-11', 1), (2, '11-11-11-11', 2), (3, '11-11-11-12', 1), (4, '11-11-11-12', 2), (5, '11-11-11-13', NULL);
    
    create table tmid (id int, sno varchar(20), pid int, `default` char(1));
    insert into tmid values
    (1, '11-11-11-11', 1, 'N'),(2, '11-11-11-11', 2, 'Y'),(3, '11-11-11-12', 1, 'N'),
    (4, '11-11-11-12', 2, 'Y'),(5, '11-11-11-13', 2, 'Y'),(6, '11-11-11-13', 3, 'N');
    
    create table provider (pid int, pname varchar(20));
    insert into provider values (1, 'Ambank'), (2, 'Citybank'), (3, 'CIMB Bank');
    

    データ

    mysql> select * from service;
    +-------+-------------+------+
    | svcid | sno         | pid  |
    +-------+-------------+------+
    |     1 | 11-11-11-11 |    1 |
    |     2 | 11-11-11-11 |    2 |
    |     3 | 11-11-11-12 |    1 |
    |     4 | 11-11-11-12 |    2 |
    |     5 | 11-11-11-13 | NULL |
    +-------+-------------+------+
    
    mysql> select * from tmid;
    +------+-------------+------+---------+
    | id   | sno         | pid  | default |
    +------+-------------+------+---------+
    |    1 | 11-11-11-11 |    1 | N       |
    |    2 | 11-11-11-11 |    2 | Y       |
    |    3 | 11-11-11-12 |    1 | N       |
    |    4 | 11-11-11-12 |    2 | Y       |
    |    5 | 11-11-11-13 |    2 | Y       |
    |    6 | 11-11-11-13 |    3 | N       |
    +------+-------------+------+---------+
    
    mysql> select * from provider;
    +------+-----------+
    | pid  | pname     |
    +------+-----------+
    |    1 | Ambank    |
    |    2 | Citybank  |
    |    3 | CIMB Bank |
    +------+-----------+
    

    結果

    +-------+-----------------+--------------+
    | svcid | serviceprovider | tmidprovider |
    +-------+-----------------+--------------+
    |     2 | Citybank        | Citybank     |
    |     4 | Citybank        | Citybank     |
    |     5 | NULL            | Citybank     |
    +-------+-----------------+--------------+
    



    1. ネストされた集計関数

    2. 1か月あたりの修正値を毎日および国に分割

    3. Oracleの文字列の空白(改行およびタブスペース)をトリムする

    4. ケースと制限ステートメントを使用してこのmysqlクエリを処理する方法