从具有仅影响一个表的条件的两个表中进行选择

时间:2016-04-09 21:19:18

标签: mysql

我有两个表客户交易,我需要从这两个表中查询,所有客户都应该选择这些表的总交易量。
我的问题是当我从这两个表中查询并设置条件时;哪些事务应该具有客户端ID它只显示那些在事务表中有记录的客户端,但是我希望它显示所有客户端,即使它们没有任何事务(它可以显示零而不是事务的总和)。
我知道因为属于事务表的条件,查询不选择不满足查询要求的客户表中的人,但是如何选择所有客户端和他们的事务总和或者如果他们没有有任何交易。

这是表的简短视图(只有我在查询中使用的那些列)

ID   Name    Company    Phone  //clients table

ID   Client_id    Incoming    ...   //transaction table

提前谢谢你,抱歉我的英文不好

3 个答案:

答案 0 :(得分:1)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2 class="p1">Player 1</h2>
    <input type="text" class="addName1" value="Player 1"></input><button class="addName1b">Add name</button>

答案 1 :(得分:1)

你可以使用左连接,例如: 选择 * 来自客户 LEFT JOIN事务ON client.id = transaction.Client_id

您将获得所有客户端,来自事务的空行将设置为null,因此您必须将其更改为0

答案 2 :(得分:1)

此外,您还可以使用相关子查询执行此操作:

SELECT c.*,
       (select sum(t.incoming) - sum(t.outgoing)
        from transactions t
        where t.client_id = c.id
       ) as total
from clients c;

在某些情况下,这可能会有更好的表现。