mySql多表查询,有中间表和外键关联

select a.id,a.name,
sum(case when d.STATUS=0 then 1 else 0 end) as 待处理,
sum(case when d.STATUS=1 then 1 else 0 end) as 带跟进,
sum(case when d.STATUS=2 then 1 else 0 end) as 已结束,
sum(case when d.STATUS=3 then 1 else 0 end) as 已完成
from D d,A a
where a.id = d.Aid (d表的Aid和a表的id对应,但d表有多条数据的Aid=a.id)
group by a.id

select a.id,a.name as 处理人,c.name as 所属机构
from A a,B b,C c
where a.id = b.Aid and c.id = b.Cid (B表是中间表,只存放a表的ID和c表的ID)

就是把这两个sql语句写在一个里面

2个回答

你打算做什么呢,至少说明一下上下两个sql谁放谁的里面

select id,name as 处理人,(select c.name 
from A a,B b,C c 
where a.id = b.Aid and c.id = b.Cid and a.id=t.id) 所属机构  from(
 select a.id,a.name,
sum(case when d.STATUS=0 then 1 else 0 end) as 待处理,
sum(case when d.STATUS=1 then 1 else 0 end) as 带跟进,
sum(case when d.STATUS=2 then 1 else 0 end) as 已结束,
sum(case when d.STATUS=3 then 1 else 0 end) as 已完成
from D d,A a
where a.id = d.Aid (d表的Aid和a表的id对应,但d表有多条数据的Aid=a.id)
group by a.id
) t
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
项目中多表关联查询,没有外键关联
今天项目中碰见多表查询,订单表,商品表(作业更新,商品-门店,每个门店有相同的商品,所有商品重复),门店表,现在要关联查询三个表,根据门店号查出所有商品,订货情况; 我的思路是新建对象,将要展示的数据封装。用sql语句查询 String sql="select isnull(o.oid,0) as oid,g.goodscode,g.goodsname,isnull(o.qty,0) as q
多表查询、外键、表与表之间的关系
外键 通常在实际工作中,数据库中表格都不是独立存在的,且表与表之间是有种联系的,比如两张表格,一张为分类表category,一张为商品表product。在分类表中有两个信息,cid、cname,商品表中有三个数据信息pid、name、price。两张表要想有着某种联系,需要设定主键和外键两个属性,其中在分类表(主表)中将cid设置为主键,商品表(从表)中pid设置为外键。 外键特点:
多表在没有外键下的联合查询
select a.yf as 日期,a.je as 实际销售金额,to_number(b.WHIR$T3232_f8968,'999999999.99') as 预算金额 from (select to_char(to_date(WHIR$T3231_f8958,'yyyy-mm-dd'),'yyyy-mm') yf ,sum(to_number(WHIR$T3231_f8960 ,'999999
mysql删除有外键关联的表数据
第一种:(不要外键约束) 手动删除外键约束; 删除表数据 第二种:(保留外键约束) SET FOREIGN_KEY_CHECKS = 0;    TRUNCATE TABLE 表名;   SET FOREIGN_KEY_CHECKS = 1;  ------------------------------------------------------------------
关系数据库设计中,用中间表好还是直接设定主外键关联好?
有人会对数据库有这样的疑问: 因为大多数的数据库教程上都是告诉你关系数据库如何去创建1:1、1:N和N:M的数据库关系,但我发现很多开源产品中,并没有直接使用关系数据库的关系查询、关系删除等功能,而是直接在代码中对多个表的查询结果进行组合。 这两种方式的优缺点是什么呢?为什么很多项目都选择后者呢?在一个中型以上的项目实践中,我该选择哪种方式,或是两种方式结合使用? 我想:
HQL语句多表联合查询,Mysql不设置外键关系
如有表A,表B,表C A表包含B表的key,A表包含C表的key。如果我们想用HQL语句查询A表时带出A表所有属性和B表的所有属性和C表的所有属性,HQL语句可按一下方法写。 @NamedQuery(name="getOrderByUserid",query="From A a,B b,C c where a.user_id=b.user_id and a.constantly_id=c.co
我真是受够了没有外键关联的Hibernate多表查询!-- 反射 通过example查询列表
HIbernate 中,没有外键关联,Criteria 不能关联查询!所以就不能findByExample,通过一个条件对象来获取数据。 只能我们自己搞了! AbstractClass: /** * 设置查询条件 * @param t * @param whereHQL * @return */ private List s
外键关联的表怎么删除数据
这是一个示例,示范了怎么在有外键的表中添加删除数据--创建表create table tmp1([id] int primary key)create table tmp2([fkid] int FOREIGN KEY REFERENCES tmp1([id]))insert into tmp1 values(1)--违反外键约束,会出错的--insert into tmp2 values(2
linq to entity没有外键的多表查询
今天某个界面时出现了多表查询(而且表之间没有外键),当然带外键的可能好处理些了,可以参照网上一篇不错的文章 http://www.dotblogs.com.tw/asdtey/archive/2009/10/08/10946.aspx 表之间没有外键:直接看代码吧,你明白的............. 类似的sql 语句如下(主要是查询order表,其中附加有users表和ente
MySQL数据库学习笔记(六)----MySQL多表查询之外键、表连接、子查询、索引
本文转自:http://www.cnblogs.com/smyhvae/p/4042303.html 点击打开链接 在这里我自己想补充的一点是:在你建立索引完成时,可是你在navicat的试图中,在对应表的设计表中,没有找到新建立起来的索引,那么你可以点击“保存”按钮,那么这样的话,就可以看见新建立起来的索引。 本章主要内容: 一、外键 二、表连接 三、子查询
Hibernate 关系映射(6) 基于中间表关联的单向1:N
基于中间表关联的单向1:N 单向 1 对 N 关联,注意 和 N:1 是相反的 想象下: 吃大锅饭的时候 ,就是很多人住一个地方,一个房间,一个大炕上 eg:  一个地方有多个人住.或者说 多家人 eg:  每个同学记住老师,比老师记住每个同学简单. (在 n 的一端进行配置效率高) N            1 Person   : Address Student  : Tea
mysql 外键关联限制
第一次接触mysql,很简单的两张表关联,当然可以采用mysql自带的外键限制来保证数据一致性,但是上网查了些资料。发现对于insert/update操作完全合乎我的需求逻辑,但是delete却与我需要的完全相反,比如A表(A_id),B表(B_id, A_id),其中A_id是B表外键,A表主键,如果采用mysql中的FOREIGN KEY,并且是Restrict,则只有把B表删除,才可以删除A
MySQL因为外键关联无法删除数据解决方法以及修改数据库全部表中某种外键的值
mysql删除数据时因为外键关系无法删除的解决办法;批量更新数据库所有表中外键为某关联表的某条数据的值;
JAVAWEB开发之多表设计、外键约束、内外连接以及子查询
多表设计—外键约束 作用:保证数据的完整性 定义外键约束: (1)可以直接在create语句中定义外键      foreign key  当前表名(字段名) references 目标表名(目标表的主键) (2)创建完语句后,可以直接使用修改语句定义     alter  table  表名  add foreign key  当前表名(字段名)  reference 目标表名(目标
MySQL主外键表关联表数据的同时删除
今天做了实验,要求将满足某个条件的主表和相关联的几个子表的数据全部删除,其实这个要求很简单,如果子表在创建外键的时候指定了ON DELETE CASCADE,则直接从主表中删除相关记录,子表中数据也会一起删除。但是现在的子表外键创建时候没有加此语句,如何来实现呢?  条件:p(父表)没有ON DELETE CASCADE       c(子表) mysql> delete a,b from p
一个表关联多个表的外键
create database zhouhuigouse zhouhuigocreate table customer  (  customerID int  primary key,   customerName varchar(50) not null,   address varchar(100) null,    linkMan char(20) null,   tel char(20)
主键,外键,主表,从表,关联表,父表,子表
一、前言     在数据库设计中,Hibernate,iBatis等ORM框架的使用中经常听说主键,外键,主表,从表,关联表,父表,子表之类的术语,弄懂它们之前的区别与联系对于数据库设计和ORM框架的学习使用是非常有必要的。     二、概述       下面从数据库设计角度,ORM框架使用(以Hibernate为例),PowerDesigner软件以及实际业务角度进行
MYSQL查询之多表查询、子查询及表间关系
一对一关系一对一的表关系: 例如:qq和qq的详尽信息建立外键的时候 如果明确主从关系? 被引用的表是主表,外键在从表中建立 关联主表实现代码如下: CREATE TABLE qq( qqid int PRIMARY KEY, password varchar(100) ); CREATE TABLE qqDetail(
怎么用Trancate清空两个有主外键关联的表?
 TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。TRUNCA
存在外键关联的主表truncate如何做
主外键是数据库提供的一种两表之间强制关联的方法,也可以从应用层实现。优点缺点数据库实现的主外键由数据库层机制保证,无需应用额外实现强关联,不易扩展变更应用实现的主外键易扩展变更完全由应用控制,要求较高我认为需要根据实际情况进行取舍,例如表不复杂,可以由应用实现,若表之间关联较多且复杂,那么交由数据库处理,至少保证不会错。存在主外键关联的主表,由于存在外键关联关系,因此有些操作就会禁止,例如trun
java程序员第十六课 -MySQL数据库(多表的查询)
课程回顾:MySQL数据库和SQL语言数据库的概述1.数据库的作用:仓库,存储数据。 2.关系型的数据库,保存实体与实体之间的关系。 3.常见的数据库 * Oracle MySQL SQLServer DB2 MySQL数据库的安装和卸载1.看笔记 2.MySQL密码重置。文档 MySQL数据库的概念1.数据库的服务器 – 多个数据库 – 每一个数据库中存在的多个表结构 – 创
mySQL数据库--增加、删除、更改外键关联
删除外键关联 增加外键 关联 ALTER TABLE tblorder DROP FOREIGN KEY `FK_order_consignee_cityid`; ALTER TABLE tblorder ADD CONSTRAINT `FK_tblgtt_order_consignee_cityid` FOREIGN KEY(`consignee_cityid`) REFERENCE
Mysql多表查询效率的研究(一)
Mysql多表查询效率的研究(一)本文探究了mysql InnoDB引擎在多表查询的应用场景下,使用子表、内连接和左联接运行速度的差别,并且比较了索引使用与否对查询效率的影响。 第一部分简略地概括了索引、子表查询、联接查询的算法和数据结构; 第二部分探讨索引的使用策略和查询语句的优化并进行测试; 第三部分在前两部分的基础上进一步讨论mysql高性能的实现。一、数据结构基础 索引原理 索引:I
Hibernate-没有外键关联的两个表做联合查询
有两个表Zsplcxxb(流程表)和Lcsplsb(流程审批历史表),两个表都有lcbh(流程编号),但是没有设置外键关联,做以下的查询: from Zsplcxxb as a inner join Lcsplsb as b on a.lczbh = b.lczbh and b.blrbh='' and b.blrbh != a.sqrbh and a.clrbh != '' order by
mysql中多表不关联查询
大家在使用mysql查询时正常是直接一个表的查询,要不然也就是多表的关联查询,使用到了左联结(left join)、右联结(right join)、内联结(inner join)、外联结(outer join)。这种都是两个表之间有一定关联,也就是我们常常说的有一个外键对应关系,可以使用到 a.id = b.aId这种语句去写的关系了。这种是大家常常使用的,可是有时候我们会需要去同时查询两个或者是
MyBatis--关联关系查询--多对多--多表连接查询
多对多是由两个多对一组合而成! 一般情况,多对多会由一个中间表来表示! 表中有外键,这个表一定是多方!! 定义实体:                定义双向关联的实体的toString()方法时,只让一方的toString()方法中可以输出对方,不要让双方均可输出对方。否则将会出现输出时的递归现象,程序报错:递归调用,使调用栈的深度达到最大值!(查看《算法图解》关于
hql查询多个实体类,类之间没有外键关联
hql查询多个实体类,类之间有外键关系,但是没有外键关联
MySql数据库外键关联
设置外键关联是可以设置在删除时和在更新时的操作,其中有三个比较重要的。 (1)层叠(级联):cache (2)设为null:set null (3)无动作:no action(1)层叠,当主表删除一条记录,那么从表对应的引用了被删除的记录的主键作为外键的记录将会级联删除。更新时候也一样。 (2)设为null,当主表删除一条记录,那么从表对应的引用了被删除的记录的主键作为外键的记录的外键将会设
mysql设计外键关联
学习JPA编程,进行
mySql主外键关联例子
知识点很简单,但是语句总忘,在这里写一个小例子,有助于大家记忆。mySql主外键关联例子
用MySQL Workbench创建外键及多表查询
1.创建外键 2.多表查询
MySQL多表联表查询
需求分析:现有一个参数需要根据这个参数(这个参数可能只有一个表才有)查询两个表的信息,但是你又不能查询两次数据库,此时就可以使用连表查询。 前提:必须有一个两个表有相同数值的字段。 select * from car_brand left join car_seller on car_brand.id=car_seller.brand where town = '110101'; 本
mybatis---关联表的增删改三种方式
在hibernate的配置文件中,有cascade属性,供我们设置关联表的增上爱
MYSQL数据库语句之多表操作(三)
多表操作join查询(join按照功能分可以分为3类): cross join(交叉连接):获取多个表中的交叉关系。 inner join(内连接):获取2个表中字段匹配关系的记录。 外连接 left join(左连接):获取左表所有记录,即使右表没有对应的匹配记录。 right join(右连接):用于获取右表所有记录,即使左表没有对应匹配的记录。 案例参考下面多表关系的实例。unionunio
SQL面试题 三(单表、多表查询)
一、给定一张学生成绩表tb_grade:学号,姓名,科目号,科目名,分数。(如下表) (select * from tb_grade order by Sno,Cno;) +------+-------+-----+-------+-------+ | Sno  | Sname | Cno | Cname | score | +------+-------+-----+-------+
删除有外键关联的表sql语句
drop table tableName cascade constraints; 备注:强行删除该表后,有该外键约束的表会取消该外键约束。
mysql多表查询1 --- 中间表
一   这里采用join的方法进行多表查询 这里有4张表 1.student学生表 +-------------+-------------+------+-----+---------+-------+ | Field       | Type        | Null | Key | Default | Extra | +-------------+----------
Android ORMLite框架入门用法教程二(两张表关联外键)Demo
Android ORMLite框架入门用法教程二(两张表关联外键)实例Demo,详情请看博客教程
Oracle 与 Mysql 多表连接对比
oracle:   select a.aid aid , b.bid bid ,c.cid cid , d.did did , e.eid eid   from   tablea a ,   tableb b ,  tablec c ,  tabled d ,  tablee e   where  a.aid = b.aid (+)  and a.aid = c.aid(+)  and b.bid
Mysql中使用中间表提高统计查询速度
对于数据量较大的表,在其上进行统计查询通常会效率很低,并且还要考虑统计查询是 否会对在线的应用产生负面影响。通常在这种情况下,使用中间表可以提高统计查询的效率, 下面通过对session 表的统计来介绍中间表的使用: (1)session 表记录了客户每天的消费记录,表结构如下: CREATE TABLE session ( cust_id varchar(10) , --客户编号 c
相关热词 c#二进制字符转字节 c# rc4 c#中md5加密 c# 新建mvc项目 c# 引用mysql c#动态加载非托管dll c# 两个表数据同步 c# 返回浮点json c# imap 链接状态 c# 漂亮字