多对多关系怎么写sql语句 多对多关系表怎么写sql语句进行查询,比如有一张员工表,有一张部门表,还有一张中间表,一个员工可以在多个部门,一个部门也有多个员工,比如说有1号员工张三,在41部门,又在42部门,又在43部门,2号员工李四在41部门,3号员工王五在41,42部门,求一号员工在哪个部门,怎么用sql语句来写,因为有一个中间表,是用三表联合查询吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select 员工表.员工姓名,部门表.部门名称 from 员工表 join 中间表 on 员工表.员工id=中间表.员工id and 员工表.员工姓名='王五' join 部门表 on 中间表.部门id=部门表.部门id;我的理解你的表之间是不是这样连接的啊 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 dualSQL> /已创建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=1SQL> / DEPTNO DNAME---------- ------------------------------ 41 财政部 42 文艺部 43 技术部 oracle中判斷數據不在表中 新手,如何登陆到Oracle Directory Manager管理器? 以下代码为什么Oracle会报错? 送分100分:如何查看数据库实例中存在的表 如何得到这样的视图或结果集,在线等,急!!!!....... 存储过程权限问题 在WEB开发中,提交有'的字符时,写入数据不成功.是不是所有数据库系统都会出此类错误?有办法解决吗? 网线断掉后超时问题 oracle中,一个表的某个字段想设置成为自增的该怎么操作?\ oracle生成的LST文件怎么导入到mysql数据库? 在线等 数据导入问题 如何合并两个where条件一样的sql语句
join 中间表 on 员工表.员工id=中间表.员工id and 员工表.员工姓名='王五'
join 部门表 on 中间表.部门id=部门表.部门id;
我的理解你的表之间是不是这样连接的啊
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 技术部