作者cutekid (可爱小孩子)
看板Database
标题Re: [SQL ] Join使用请教
时间Fri Jul 19 20:55:54 2013
select C.ID, A.NAME, B.JOB
from B right join (
select id.ID, job.JOB
from (select distinct ID from B) id, (select distinct JOB from B) job
) C on B.ID = C.ID and B.JOB = C.JOB inner join A on C.ID = A.ID
order by C.JOB asc,C.ID asc
因为手边没有 db 可测
心理预期 B right join C 以後如下(请您检验):
B C
=======================
ID JOB ID JOB
-- ---- -- ----
01 规划 01 规划
02 规划 02 规划
nul nul 03 规划
01 安装 01 安装
02 安装 02 安装
03 安装 03 安装
01 测试 01 测试
nul nul 02 测试
03 测试 03 测试
※ 引述《gss112196 (轻飘飘的云)》之铭言:
: A表
: ID NAME
: ----------
: 01 PETER
: 02 JOHN
: 03 MARK
: B表
: ID JOB
: ----------
: 01 规划
: 01 安装
: 01 测试
: 02 规划
: 02 安装
: 03 安装
: 03 测试
: 简单,但是想破头了,请各位提供想法或方法,
: A表是名字主档,B表是每个ID对应的工作,
: 请问要怎麽样做JOIN或是subquery才能让B表每一种JOB中的ID(也就是SELECT ID
: GROUP BY JOB)都对应一次A表。
: 结果(A+B)
: B表中只有三种JOB:规划、安装、测试
: ID NAME JOB
: -------------------
: 01 PETER 规划
: 02 JOHN 规划
: 03 MARK NULL
: 01 PETER 安装
: 02 JOHN 安装
: 03 MARK 安装
: 01 PETER 测试
: 02 JOHN NULL
: 03 MARK 测试
: P.S 有用Select * FROM a LEFT JOIN b ON a.id = b.id 但没办法出现NULL
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.14.52