Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL联接中的重复记录_Mysql_Sql_Join - Fatal编程技术网

Mysql SQL联接中的重复记录

Mysql SQL联接中的重复记录,mysql,sql,join,Mysql,Sql,Join,我在SQL查询中得到多个结果。我有三张表:付款、信用和收费。在每个月底,我需要根据账户持有人(让我们打电话给上述个人所有者)进行余额远期。我尝试了不同的查询,但不断得到重复的行。我知道这与我的WHERE子句有关,但我不知道如何修复它 在我的测试数据中,我有一条付款记录: 所有者:1001 日期:2014-03-23 金额:50.00 我从查询中返回了3条记录: SELECT p.amount FROM payments p, charges ch, credits cr WHERE (p.own

我在SQL查询中得到多个结果。我有三张表:付款、信用和收费。在每个月底,我需要根据账户持有人(让我们打电话给上述个人所有者)进行余额远期。我尝试了不同的查询,但不断得到重复的行。我知道这与我的
WHERE
子句有关,但我不知道如何修复它

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

所有者
:1001
日期
:2014-03-23
金额
: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()
,并在
WHERE
子句中添加日期

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


编辑:我已经做了一个表格的编辑。这些名字不太通用。我实际上使用的是
单元
,而不是
所有者
。尽管这并不重要。

你可以用

选择p.amount 来自付款p、费用ch、贷项cr 式中(p.owner=1001,ch.owner=1001,cr.owner=1001) 限制1

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

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
)

这看起来是因为实际上没有任何条件连接这三个表,而是从它们那里得到笛卡尔积(其中一个表有3行吗?)。请发布更多关于所有3个表的结构以及每个表中的一个小样本行集的信息,尽管我们可以通过推断您已经尝试过的内容来猜测您正在做什么。@MichaelBerkowski我在我的postCan中添加了一个提琴,您给了我一个表字段吗?不确定您的意思。它返回:
amount 50.00 50.00 50.00
我想知道表的结构,我将给出390个金额进行转发。现在有什么问题?如果你看表,金额不正确。如果使用绝对值,总共是190美元。有些价值观是消极的,这是正确的。我相信实际的剩余fwd应该是10美元。你期望的剩余fwd是多少?