Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

mysql - hiển thị 2 tên nhà cung cấp riêng biệt từ 1 bảng nhà cung cấp

Bạn có thể sử dụng cái này:

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;

Bảng

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');

Dữ liệu

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 |
+------+-----------+

Kết quả

+-------+-----------------+--------------+
| 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. Tấn công SQL injection với php

  2. Khớp dấu '%' khi tìm kiếm trong cơ sở dữ liệu MySQL

  3. Làm cách nào để bạn sử dụng tốt các CPU đa lõi trong các ứng dụng PHP / MySQL của mình?

  4. Làm thế nào để chuyển đổi / cast varchar sang date?

  5. Truy vấn PHP / MySql VÀ / HOẶC để tìm kiếm nâng cao