多表连接查询的理解

 select * from emp;
 select * from dept;
 
 --这就是笛卡尔积
 select e.ename "姓名",e.empno "员工号",e.mgr "管理者",e.hiredate "受雇日期", e.job "工种",e.sal "工资",e.comm "提成",e.deptno "员工的部门号",

 d.dname "部门名",d.deptno "部门号",d.loc "部门所在地"
 from emp e,dept d order by e.ename
 
 --只有一个条件这样的话就剩下14行数据
 select e.ename "姓名",e.empno "员工号",e.mgr "管理者",e.hiredate "受雇日期", e.job "工种",e.sal "工资",e.comm "提成",e.deptno "员工的部门号",

 d.dname "部门名",d.deptno "部门号",d.loc "部门所在地"
 from emp e,dept d
 where e.deptno=d.deptno
 order by e.ename
 
 --再加一个条件,所以得到最终想要的那些记录
 select e.ename "姓名",e.empno "员工号",e.mgr "管理者",e.hiredate "受雇日期", e.job "工种",e.sal "工资",e.comm "提成",e.deptno "员工的部门号",

 d.dname "部门名",d.deptno "部门号",d.loc "部门所在地"
 from emp e,dept d
 where e.deptno=d.deptno and d.loc='NEW YORK'
 order by e.ename
 
 --这个结果就是满足所有条件所形成了
 --这里的字段是两个表字段的总和。但是我们一般只取出我们需要的。比如:
 select e.ename "姓名",e.job "工种", d.dname "部门名称",d.deptno "部门号",d.loc "部门所在地"
 from emp e,dept d
 where e.deptno=d.deptno and d.loc='DALLAS'
 order by e.ename

时间: 2024-09-17 00:18:46

多表连接查询的理解的相关文章

代码-linq多表连接查询速度很慢,但我在数据库查询分析器中却是秒查,请各位大侠帮我分析下

问题描述 linq多表连接查询速度很慢,但我在数据库查询分析器中却是秒查,请各位大侠帮我分析下 with temp as ( select (case when SHIFTSCHEDULEID is null then (case when TICKET_SELL_TYPE=2 then (select COMPANY_ID from TBL_YD_SHIFT where SHIFTNUMBER= (select SHIFTNUMBER from TBL_SP_TICKET where tick

9. 多表连接查询

        多表查询可理解为一个嵌套循环遍历. 多表连接查询有两种规范,较早的SQL92规范支持: 等值连接:连接条件要求两列值相等 非等值连接 广义笛卡尔积:没有任何连接条件(n*m条记录) 外连接 [MySQL 不支持 92规范的外连接]         外连接就是在外连接符所在的表中增加一个"万能行",这行记录的所有数据都是null,而且该行可以与另一个表中所有不满足条件的记录匹配.即可以把另一表中的所有记录选出来,不管是否满足条件. SQL99规范:提供可读性更好的多表连接

MySQL中基本的多表连接查询教程_Mysql

一.多表连接类型1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如:         由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢.一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN  2.   内连接INNER JOIN 在MySQL中把I SELECT * FROM table1 CROSS J

Access数据库多表连接查询

第一次在Access中写多表查询,就按照MS数据库中的写法,结果报语法错,原来Access的多表连接查询是不一样的 表A.B.C,A关联B,B关联C,均用ID键关联 一般写法:select * from A inner join B on A.ID=B.ID inner join C on B.ID=C.ID 此写法在Access中报错,Access对SQL语法理解方式不一样,它将两表连接后当作一个表然后再与第三个表连接,因此要改成 select * from (A inner join B o

android使用ormLite,多表连接查询

问题描述 android使用ormLite,多表连接查询 解决方案

javaee-java菜鸟请问下,两个数据表连接查询问题

问题描述 java菜鸟请问下,两个数据表连接查询问题 hql="select t.id,t.name,p.lname,t.beizhu,t.human,t.city,t.lrr,t.lrtime,t.modtime,t.address from CrmCustomer t, CrmCustomerLxr p where t.tend='已成单' and p.lname like '%" + lname + "%' and t.id=p.customerid "; S

oracle两表连接查询问题

问题描述 oracle两表连接查询问题 有两张表,一张是个人信息表包括考生姓名,年龄,性别等一系列个人信息和一些其他信息: 第二张表是成绩表,其中也包括部分考生信息和分数: 现在想要在打开成绩表的时候,个人信息字段就已经对应上第一张表了,不需要自己填写, 这个应该怎么实现,代码应该怎么写? 解决方案 http://zhidao.baidu.com/link?url=Rb77btoUtGFpnDID8qotZfN3TTQcPVhzseA4ecOHNZLznZB3bx89MUzJSOR29sNpFM

多对多关系多表连接查询,同一个字段同时满足多个条件

问题描述 分类表t_keytype商品表t_product分类商品关联表t_typeproducttid(分类ID)name(分类名称)pid(商品ID)name(商品名称)idpid(商品ID)tid(分类ID)1分类11商品11112分类22商品2212321422现在要表连接查询,根据分类ID字段同时满足多个条件的商品"(分类id=1and分类id=2)"查询是同一个字段多个and,请问改怎么写,尽量不要子查询因为数据量比较大,在此谢谢各位啦! 解决方案 解决方案二:网了发图,如

SQL Server 2012 多表连接查询功能实例代码

废话不多说了,直接给大家贴代码了,具体代码如下所示: -- 交叉连接产生笛卡尔值 (X*Y) SELECT * FROM Student cross Join dbo.ClassInfo --另外一种写法 SELECT * FROM Student , ClassInfo -- 内连接 (Inner 可以省略) SELECT * FROM Student JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- Inner Jo