表結構
depid 部門id 唯一
depname 部門名稱
depgx 部門關系
部分原始數據如下
depid depname depgx
Q001000 制造部 Q001
Q001100 制一課 Q0011
Q001101 制一組 Q001101
Q001102 制二組 Q001102
Q001103 制三組 Q001103
Q001200 電子裝配部 Q001200
Q001201 插件一課 Q001201
想用sql語句達到下列要求
部門id, 部門名稱,課別id, 課別名稱, 組別ID, 組別名稱 工單號,時段,機重型號,....
Q001000 制造部 Q001100 制一課 Q001101 制一組 WR3-6954125 ...
......
或是:
課別id, 課別名稱, 組別ID, 組別名稱 工單號,時段,機重型號,....
Q001100 制一課 Q001101 制一組 WR3-6954125 ...
.........
depid 部門id 唯一
depname 部門名稱
depgx 部門關系
部分原始數據如下
depid depname depgx
Q001000 制造部 Q001
Q001100 制一課 Q0011
Q001101 制一組 Q001101
Q001102 制二組 Q001102
Q001103 制三組 Q001103
Q001200 電子裝配部 Q001200
Q001201 插件一課 Q001201
想用sql語句達到下列要求
部門id, 部門名稱,課別id, 課別名稱, 組別ID, 組別名稱 工單號,時段,機重型號,....
Q001000 制造部 Q001100 制一課 Q001101 制一組 WR3-6954125 ...
......
或是:
課別id, 課別名稱, 組別ID, 組別名稱 工單號,時段,機重型號,....
Q001100 制一課 Q001101 制一組 WR3-6954125 ...
.........
下面的测试数据depgx列的只并未采用楼主例子中的数据,而是根据楼主提供的结果进行的推测.
declare @t table(depid varchar(20),depname varchar(20),depgx varchar(20))
insert @t
select 'Q001000', '制造部','Q001' union all
select 'Q001100', '制一課','Q001000' union all
select 'Q001101', '制一組','Q001100' union all
select 'Q001102', '制二組','Q001100' union all
select 'Q001103', '制三組','Q001100'SELECT
a.depid as 部门id,a.depname as 部门名称,
b.depid as 课别id,b.depname as 课别名称,
c.depid as 组别id,c.depname as 组别名称
FROM @t a
inner join @t b on a.depid = b.depgx
inner join @t c on b.depid = c.depgx/*结果
部门id 部门名称 课别id 课别名称 组别id 组别名称
----------------------------------------------------------------------------------
Q001000 制造部 Q001100 制一課 Q001101 制一組
Q001000 制造部 Q001100 制一課 Q001102 制二組
Q001000 制造部 Q001100 制一課 Q001103 制三組
*/
這個不要管它请楼主检查一下depgx列的值是否有误,例子中的depgx并不能反映三级关系.
這個可以改
只要能達到目的就可以了
高手
謝謝啦
inner join B
on A.ID=B.IDinner join ,left join ,right join ,full join等等。。
同一個表啊
根據hellowork(一两清风)這位大哥的說法
只是部門關系沒做好而已
這只是三級,可是二級還是有點問題SELECT
a.depid as 部门id,a.depname as 部门名称,
b.depid as 课别id,b.depname as 课别名称
FROM DepInfo a
inner join DepInfo b on a.depid = b.depgx
inner join DepInfo c on b.depid = c.depgx