Mysql左连接/右连接查询
表 turck --车辆信息:id,ch...
表 fee --费用信息:summary,type...
-----------------------------------------------------------------------------------------------------------------------
查询出:每辆车应收实收费用
select a.ch ,b.ys,b.sh from
truck a,
(
select t1.ys,t2.sh,t2.truck_id from
(select truck_id ,sum(summary) ys from fee where type = '付' group by truck_id)
as t1
right outer join
(select truck_id ,sum(summary) sh from fee where type = '收' group by truck_id)
as t2
on (t1.truck_id = t2.truck_id)
) b
where a.id = b.truck_id
;
本查询,只检索交过费用,可不一定挂过帐的信息
ch ys sh
A35251 2200 2440
A36365 24944 27422
A36063 33001 32501
A36053 22001 22001
A41845 2392 2392
A41708 Null 2322
A40163 Null 2240
A40866 4020 2 720
A42219 Null 2020
A29353 2044 2545
A28510 Null 2244
A28616 Null 20422
A27346 Null 430
A28948 Null 2222
A16071 Null 3020
A58745 Null 25004
A58396 2200 2324
A20897 Null 2202
A67889 4042 1011
--------------------------------------------------------------------------------------------------------------------------------
查询出:每辆车应收实收费用;
车辆,已挂过帐,不一定是已收费
select a.ch ,b.ys,b.sh from
truck a,
(
select t1.ys,t2.sh,t2.truck_id from
(select truck_id ,sum(summary) ys from fee where type = '付' group by truck_id)
as t1
left outer join
(select truck_id ,sum(summary) sh from fee where type = '收' group by truck_id)
as t2
on (t1.truck_id = t2.truck_id)
) b
where a.id = b.truck_id
;
-----------------------------------------------------------------------------------------------------------------------------
查询出:每辆车应收实收费用;
车辆,已挂过帐,并且是已收费
select t3.ch,t1.ys,t2.ss from
(select truck_id,sum(summary) ys from fee where type = '付' group by truck_id) as t1,
(select truck_id,sum(summary) ss from fee where type = '收' group by truck_id) as t2,
truck t3
where t1.truck_id = t2.truck_id and t1.truck_id = t3.id
;
分享到:
相关推荐
此外,MySQL并不支持全连接(FULL JOIN),这在其他数据库系统中可以用于返回左右两边表的所有记录,无论是否存在匹配项。 总结一下,左连接、右连接和内连接是MySQL中处理多表数据融合的重要手段。左连接以左表为...
4. **数据库操作**:获取连接后,可以创建Statement或PreparedStatement对象执行SQL语句,以及ResultSet对象来处理查询结果。 5. **事务管理**:使用Connection对象的commit()和rollback()方法可以控制事务的提交和...
实验报告主要涵盖了数据库系统的基本操作,特别是MySQL中的分组查询、多表连接和子查询的运用。以下是对这些知识点的详细解释: 1. **GROUP BY 语句与聚合函数**: GROUP BY 语句用于将数据分组,通常与聚合函数如...
- **连接字符串和选项**:在使用 MySQL Connector/J 连接数据库时,了解如何设置正确的连接字符串以及配置属性至关重要。这些选项包括服务器地址、端口号、用户名、密码等。详情见文档中的“Driver/Datasource Class...
本文将深入探讨七种主要的MySQL连接查询类型,并提供每种查询的实现示例。 1. 内连接(INNER JOIN): 内连接返回两个表中匹配的行。在给定的例子中,`INNER JOIN`被用来查找`employees`和`departments`表中`...
在多线程环境中,MySQL连接数过多的问题是一个常见的性能瓶颈,尤其在高并发的应用场景下。这通常是由于每个线程创建一个独立的数据库连接导致的,当并发线程数量增加时,连接池中的连接数量也随之增加,如果超过...
数据库URL中的`localhost:3306`指的是本地主机上的MySQL服务器,`mydatabase`是你要连接的数据库名。`username`和`password`是用于身份验证的数据库用户名和密码,`driver`则是对应数据库驱动的全限定类名。这样的...
4. 全连接:返回所有两边表的记录,如果某一边没有匹配,则用NULL填充。 执行连接操作时,我们使用`JOIN`关键字,后面跟着要连接的表名。然后,使用`ON`关键字指定连接条件,即哪些字段的值相等。例如: ```sql ...
这条语句表示给予`/var/lib/tomcat5.5/webapps/项目名称/`下的所有代码全权限(`AllPermission`),这将覆盖Java默认的安全策略,使得Web应用能够连接到本地的MySQL数据库。如果不确定应放入哪个`.policy`文件,可以...
是MySQL Connector/J驱动的全限定类名,它是MySQL官方提供的JDBC驱动,用于在Java程序中与MySQL数据库建立连接。MySQL Connector/J是完全兼容JDBC规范的驱动,它使得Java开发者能够通过编写Java代码来执行SQL语句,...
本文将详细探讨如何使用Java连接MySQL数据库,以及涉及到的相关知识点。 首先,Java连接MySQL数据库通常依赖于JDBC(Java Database Connectivity),这是一个Java API,允许Java程序与各种数据库进行交互。在给定的...
在.NET框架中,连接MySQL数据库通常涉及到使用MySQL的数据提供者——`MySql.Data.dll`库。这个库由Oracle公司提供,允许.NET开发者通过C#等语言与MySQL服务器进行交互。`MySql.Data.dll`提供了丰富的类和方法,使得...
在C#中建立MySQL连接,你需要创建一个MySqlConnection对象,并传入包含数据库连接信息的连接字符串。例如: ```csharp string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=...
在Java中,连接MySQL数据库需要一个特定的驱动程序,这个驱动包通常包含了实现JDBC接口的类和方法,使得Java应用能够执行SQL查询、插入、更新或删除数据等操作。 首先,让我们了解Java连接MySQL的基本步骤: 1. ...
在MySQL中,虽然不直接支持全外连接,但可以通过结合左外连接和右外连接达到相同的效果。例如,`SELECT * FROM voteMaster vm LEFT OUTER JOIN voter vt ON vm.id=vt.id UNION ALL SELECT * FROM voteMaster vm ...