表结构如下:CREATE TABLE `tdepartment` (
`td_id` int(11) NOT NULL AUTO_INCREMENT,
`td_u_id` int(11) DEFAULT NULL COMMENT '上级部门,当为null时表示无上级部门',
`td_name` varchar(200) NOT NULL COMMENT '部门名称',
`td_leader` varchar(200) DEFAULT NULL COMMENT '部门负责人',
`td_memo` text COMMENT '部门描述',
PRIMARY KEY (`td_id`),
KEY `td_u_id` (`td_u_id`),
CONSTRAINT `td_u_id` FOREIGN KEY (`td_u_id`) REFERENCES `tdepartment` (`td_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='运营商部门表'
现在我想查到
部门名称、上级部门名称、部门描述、部门负责人(上级部门一个是该表的一条记录)
`td_id` int(11) NOT NULL AUTO_INCREMENT,
`td_u_id` int(11) DEFAULT NULL COMMENT '上级部门,当为null时表示无上级部门',
`td_name` varchar(200) NOT NULL COMMENT '部门名称',
`td_leader` varchar(200) DEFAULT NULL COMMENT '部门负责人',
`td_memo` text COMMENT '部门描述',
PRIMARY KEY (`td_id`),
KEY `td_u_id` (`td_u_id`),
CONSTRAINT `td_u_id` FOREIGN KEY (`td_u_id`) REFERENCES `tdepartment` (`td_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='运营商部门表'
现在我想查到
部门名称、上级部门名称、部门描述、部门负责人(上级部门一个是该表的一条记录)
1、MySQL还是 建议发到MySQL版从而得到专业回复。
2、一个 table不存在连接查询,而且从关系上应该需要一个描述上级部分的table。
3、尝试执行:
select b.上级部分名称,a.td_u_id ,a.td_name , a.td_leader ,a.td_memo
from tdepartment a,需要关联的表 b
where a.td_u_id =b.td_u_id
--或者
select b.上级部分名称,a.td_u_id ,a.td_name , a.td_leader ,a.td_memo
from tdepartment a
left join 需要关联的表 b on a.td_u_id =b.td_u_id
关联到部门表的相应id就可以了
select t1.td_name as[部门名称],isnull(t2.td_name,N‘最高部门’)as[上级部门名称],
t1.td_memo as [部门描述],t1.td_leader as [部门负责人]
from tdepartment as t1
cross apply (select td_name
from tdepartment
where td_id=t1.td_u_id)as t2;
--- ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
---一个小问题 楼主 你的数据库是
sql server 吗?