我尝试显示部门关系,一个表用于部门,一个用于关系。每个部门都可以有几个关系(未知),至少有一个(称为#34;无")。
在这种情况下:
tbl_Department (Dep_ID,Dep_NAME)
tbl_Relation (Rel_ID,Rel_Child_ID [ForeignKey tbl_Department.ID],Rel_Parent_ID [ForeignKey tbl_Department.ID])
我得到了最好的结果(到现在为止):
Select Parent_Table.Dep_Name as Parent, Child_Table.Dep_Name as Child
FROM tbl_department as Parent_Table, tbl_department as Child_Table, tbl_relation
WHERE Parent_Table.Dep_ID = tbl_relation.Rel_Parent_ID
AND Child_Table.Rel_Chil_ID =tbl_relation.Rel_Child_ID
看起来像:
父母 - 孩子
无 - CMDG
无 - 基金
无 - GSPT
GSPT - IT支持
IT支持 - IT安全
IT支持 - IT管理员 基金 - 分析&报告
但这并不是我想要的。目的是为一个循环"做一个做得好的结构化结果。 to"显示公司结构"。
我想订购它(按关系)并填充空白(用于空场/关系)。
类似的东西:
父母 - 儿童 - 儿童 - 儿童
none - CMDG - null - null
none - FUND - null - null
无 - 基金 - 分析&报告 - null
none - GSPT - null - null
none - GSPT - IT支持 - null
none - GSPT - IT支持 - IT管理员 none - GSPT - IT支持 - IT安全
有没有办法从数据库(MySQL)中获取它。
答案 0 :(得分:0)
因此我不知道如何执行此操作并返回任意数量的列,但如果您知道部门中只有4个级别(无计数),则可以执行以下操作:
select d1.Dep_Name, d2.Dep_Name, d3.Dep_Name, d4.Dep_Name
from tbl_department d1
join tbl_relation r1 on r1.Rel_Parent_ID = d1.Dep_ID
join tbl_department d2 on d2.Dep_ID = r1.Rel_Child_ID
left join tbl_relation r2 on r2.Rel_Parent_ID = d2.Dep_ID
left join tbl_department d3 on d3.Dep_ID = r2.Rel_Child_ID
left join tbl_relation r3 on r3.Rel_Parent_ID = d3.Dep_ID
left join tbl_department d4 on d4.Dep_ID = r3.Rel_Child_ID
where d1.Dep_Name = 'none'