SQL JOIN中的重复记录

时间:2014-04-02 01:28:19

标签: mysql sql join

我在SQL查询中获得了多个结果。我有三张桌子:付款,信用和收费。在每个月末,我需要根据帐户持有人进行余额转发(让我们打电话给所有人)我尝试过不同的查询,但不断获取重复行。我知道这与我的WHERE条款有关,但我不知道如何修复它。

在我的测试数据中,我有payments的一条记录:

owner:1001 date:2014年3月23日 amount:50.00

我从查询中返回3条记录:

SELECT p.amount
FROM payments p, charges ch, credits cr
WHERE (p.owner = 1001 AND ch.owner = 1001 AND cr.owner = 1001)

我知道这不对,但我不知道查询它的正确方法。我只想返回一行。最后,我将在每个表的SUM()上使用amount,并在WHERE子句中添加日期。

首先,我需要解决这个问题。谢谢你的帮助。


编辑:我已经制作了SQL Fiddle个表格。名称不太通用。我实际上在使用unit,而不是owner。虽然这不重要。

2 个答案:

答案 0 :(得分:1)

试试这个

SELECT p.amount
FROM payments p, charges ch, credits cr
WHERE (p.owner = 1001 AND ch.owner = 1001 AND cr.owner = 1001 AND p.owner=ch.owner AND
p.owner=cr.owner
)

答案 1 :(得分:0)

您可以使用

进行限制

SELECT p.amount 从付款p,收费ch,信用cr WHERE(p.owner = 1001 AND ch.owner = 1001 AND cr.owner = 1001) 限制1

或者在任何情况下,这三个表中的一个有所有者1001的三个记录,这就是为什么它显示三个。如果你能从这三个表中给出1001的数据,那就更好了,所以我们可以看到