Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql - показване на 2 отделни имена на доставчик от 1 таблица на доставчика

Можете да използвате това:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ограничаване на определени потребители само до техните данни в обща таблица

  2. PHP &MySQL:Преобразуване на съхранения TIMESTAMP в локална часова зона на потребителя

  3. MySQL JOIN Няколко обединения на една и съща маса?

  4. Правилно внедряване на подтип супер тип в MySQL

  5. Вземете и групирайте по в EntityFramework