表结构如下: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='运营商部门表'
现在我想查到   
部门名称、上级部门名称、部门描述、部门负责人(上级部门一个是该表的一条记录)

解决方案 »

  1.   

    就是说这个表建有主键跟外键,比如说,ID、u_id两个字段,ID为主键,u_id为跟ID关联的外键
      

  2.   


    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
      

  3.   

    那就建立一个部门表啊,不同部门对应不同的id,你这个表中的部门只是该表的一个属性,
    关联到部门表的相应id就可以了
      

  4.   


    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;
      

  5.   


    --- ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
    ---一个小问题 楼主 你的数据库是 
    sql server 吗?
      

  6.   

    select a.td_name,b.td_name,a.td_memo,a.td_leader from tdepartment a left join tdepartment b on a.td_id=b.td_u_id