夺标连接查询 a->c<-b 和a->b->c两种类型

a->b->c多个表之间相互传递的关系

$sql =

<<<EOF

select a.*,d.exam_name,d.subject_id,d.subject_name from ex_user_exam as a left join

(select b.id,b.name as exam_name,b.subject_id,c.name as subject_name from ex_exam as b left join ex_subject as c on b.subject_id = c.id) as d

on a.exam_id = d.id

EOF;

用外链接方法从底层往上查询

a->c<-b 两个表都和另外一个表有关系

$sql =
<<<EOF
(select a.id,a.info,a.subject_id,a.label_id,a.label_name,a.add_time,b.name as subject_name,a.type from ex_question as a left join ex_subject as b on a.subject_id = b.id)
union
(select a.id,a.info,a.subject_id,a.label_id,a.label_name,a.add_time,b.name as subject_name,5 as type from ex_material as a left join ex_subject as b on a.subject_id = b.id)
EOF;

union方法拼接记录数:要求是字段统一

时间: 2024-10-17 21:50:39

夺标连接查询 a->c<-b 和a->b->c两种类型的相关文章

C#连接sql server windows 和 sqlserver 身份验证的两种连接字符串

//sql server 身份验证 连接字符串 private string ConnstrSqlServer = "server=服务器名称;uid=登录名称;pwd=登录密码;database=数据库名称"; //windows 身份验证连接字符串 private string ConnstrWindows = "server=服务器名称;database=数据库名称;Trusted_Connection=SSPI";

在SQL查询结果中添加自增列的两种方法

解决办法<一>:如果想查询出这个表的信息,并添加一列连续自增的ID,可用如下查询语句: SELECT Row_Number() over ( order by getdate() ) as init , * FROM 表名 解决办法<二>: 使用关键字IDENTITY创建临时表 SELECT IDENTITY(int,1,1) as Nid,* INTO #T FROM 表名 SELECT * FROM #T 原文地址:https://www.cnblogs.com/crrc/p/

SQL 子查询,连接查询复习

use lianxi0720 go --创建部门表 create table bumen ( bcode int primary key,--部门编号 bname varchar(20), --部门名称 bceo varchar(20), --部门负责人 btel varchar(20), --部门电话 ) go --创建人员表 create table renyuan ( code int primary key identity(10001,1),--人员编号,自增长用identity,从1

LINQ to Objects系列(2)两种查询语法介绍

LINQ为我们提供了两种查询语法,分别是查询表达式和查询方法语法.这篇文章分为以下几个方面进行总结. 1,一个包含两种查询语法的简单示例 2,查询表达式的结构 3,查询方法相关的运算符 一个包含两种查询语法的简单示例 一个LINQ查询既可以使用查询表达式实现,也可以用查询方法实现,还可以同时组合两种查询.下面是一个简单的示例,代码如下. namespace LINQDemo3 { class Program { static void Main(string[] args) { int[] nu

ubuntu的两种网络连接模式

ubuntu的网络连接分成两种类型,一种是modern 模式, 这种模式的配置通过ifconfig命令来进行配置,重启之后失效,这种模式就是在destop 下右上角的网络连接.如图所示 modern模式的配置在/etc/network/interfaces 配置文件中不会产生对应的项,在interfaces文件只能看到lo的配置. 在/etc/network/interfaces 中配置的网络连接叫做legacy 模式,配置形式如下 注意modern 模式与legacy 模式是相互冲突的.在系统

MSSQL之五 连接查询与子查询

在一个高级的数据库中,被浏览的数据可以被存储在多个表中.当你需要从相关的表中浏览数据的时候,你可以通过将公用的属性连接表查询数据.你可以使用子查询,这里一个查询的结果被用作另一个查询的条件的输入. 本章讨论如何通过应用各种类型的连接,例如内连接,外连接,交叉连接,等值连接或自连接,来从夺标中查询数据.进一步,它解释如何使用子查询 重点 ?        使用连接查询数据 ?        使用子查询查询数据 预习功课 ?           连接查询的几种方式 ?           子查询的使

Oracle 连接查询&lt;一&gt;

在Oracle数据库中,连接查询分为交叉连接.内连接.外链接3种类型.其中,交叉连接结果是所有其他连接结果的超集,而外连接结果又是内连接结果的超集. 交叉连接 交叉连接又称为笛卡尔积连接,是两个或多个 表之间的无条件连接.一个表中所有记录分别与其他表中所有记录进行记录.如果进行连接的表分别有n1,n2,n3...条记录,那么交叉连接的结果集中将有n1 x n2 x n3 x...条记录.例如,emp表中有14条记录,dept表中有4条记录,那么两个交叉连接后有56条记录,语句为 SQL> SEL

表连接查询与where后使用子查询的性能分析。

子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果. 子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表连接查询的性能做出一点分析. 对于表连接查询和子查询性能的讨论众说纷纭,普遍认为的是表连接查询的性能要高于子查询.本文将从实验的角度,对这两种查询的性能做出验证,并就实验结果分析两种查询手段的执行流程对性能的影响. 首先准备两张表 1,访问日志表mm_log有150829条记录(相关sql文件已放在

数据库之联合查询和连接查询

http://blog.csdn.net/memgxingfeixiang/article/details/52765208 1.JOIN和UNION区别join 是两张表做交连后里面条件相同的部分记录产生一个记录集,union是产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集. JOIN用于按照ON条件联接两个表,主要有四种:INNER JOIN:内部联接两个表中的记录,仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行.我理解的是只要记录不符合ON条件,就不会显示在结果集