多对多关系表怎么写sql语句进行查询,比如有一张员工表,有一张部门表,还有一张中间表,一个员工可以在多个部门,一个部门也有多个员工,比如说有1号员工张三,在41部门,又在42部门,又在43部门,2号员工李四在41部门,3号员工王五在41,42部门,求一号员工在哪个部门,怎么用sql语句来写,因为有一个中间表,是用三表联合查询吗?

解决方案 »

  1.   

    select 员工表.员工姓名,部门表.部门名称 from 员工表 
    join 中间表 on 员工表.员工id=中间表.员工id and 员工表.员工姓名='王五' 
    join 部门表 on 中间表.部门id=部门表.部门id;
    我的理解你的表之间是不是这样连接的啊 
      

  2.   


    SQL> CREATE TABLE emp(empno INT,ename VARCHAR2(12),sal NUMBER);表已创建。SQL> INSERT INTO emp VALUES(1,'张三',4000);已创建 1 行。SQL> INSERT INTO emp VALUES(2,'李四',5000);已创建 1 行。SQL> INSERT INTO emp VALUES(3,'王五',3000);已创建 1 行。SQL> COMMIT;提交完成。SQL> CREATE TABLE dept(deptno INT NOT NULL,dname VARCHAR2(30));表已创建。
    SQL> CREATE TABLE emp_dept(empno INT NOT NULL,deptno INT NOT NULL);表已创建。SQL> ALTER TABLE emp ADD CONSTRAINT emp_pk PRIMARY KEY(empno);表已更改。SQL> ALTER TABLE dept ADD CONSTRAINT dept_pk PRIMARY KEY(deptno);表已更改。SQL> ALTER TABLE emp_dept ADD CONSTRAINT emp_dept_pk PRIMARY KEY(empno,deptno);表已更改。SQL> ALTER TABLE emp_dept ADD CONSTRAINT emp_dept_fk_emp foreign key(empno)
      2  references emp(empno);表已更改。SQL> ALTER TABLE emp_dept ADD CONSTRAINT emp_dept_fk_dept FOREIGN KEY(deptno)
      2  references dept(deptno);表已更改。SQL> INSERT INTO dept VALUES(41,'财政部');已创建 1 行。SQL> 
      1  INSERT ALL
      2  INTO dept VALUES(42,'文艺部')
      3  INTO dept VALUES(43,'技术部')
      4  INTO dept VALUES(44,'测试部')
      5* SELECT 1,'test' FROM dual
    SQL> /已创建3行。SQL> COMMIT;提交完成。SQL> INSERT ALL
      2  INTO emp_dept VALUES(1,41)
      3  INTO emp_dept VALUES(1,42)
      4  INTO emp_dept VALUES(1,43)
      5  INTO emp_dept VALUES(2,41)
      6  INTO emp_dept VALUES(3,41)
      7  INTO emp_dept VALUES(3,42)
      8  SELECT 1,1 FROM dual;已创建6行。SQL> COMMIT;提交完成。SQL> 
      1  SELECT d.* FROM dept d,emp e,emp_dept ed
      2  WHERE d.deptno=ed.deptno AND e.empno=ed.empno
      3* AND e.empno=1
    SQL> /    DEPTNO DNAME
    ---------- ------------------------------
            41 财政部
            42 文艺部
            43 技术部