Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Sql 鲍勃和约翰互相欠钱_Sql - Fatal编程技术网

Sql 鲍勃和约翰互相欠钱

Sql 鲍勃和约翰互相欠钱,sql,Sql,我在一个文件中有以下3个字段:person\u ows person\u is\u欠款金额 示例内容: Bob John 100 John Bob 110 SQL是什么样子的,它生成: Bob John 100 110 John Bob 110 100 很抱歉,如果这是一个微不足道的问题,但我只是试图学习SQL,我发现它真的像地狱 所以,您需要的是能够连接两行。在这种情况下,您可能需要一个外部联接,假设彼此之间并不总是匹

我在一个文件中有以下3个字段:person\u ows person\u is\u欠款金额

示例内容:

Bob      John     100
John     Bob      110
SQL是什么样子的,它生成:

Bob    John    100    110
John   Bob     110    100

很抱歉,如果这是一个微不足道的问题,但我只是试图学习SQL,我发现它真的像地狱

所以,您需要的是能够
连接两行。在这种情况下,您可能需要一个
外部联接
,假设彼此之间并不总是匹配的。现在,您只需要提出您的
加入
标准,在本例中,该标准将基于姓名(
个人欠
个人欠
):

COALESCE
只是为了确保当不存在匹配项时,得到的值是0,而不是
NULL

此外,这假设
个人欠下的
个人欠下的
的每个组合中只有一个。如果您可能有两行显示John欠Bill两个不同金额的钱,那么您必须调整上面的SQL,这将有点复杂


如果你打算大量使用SQL,那么你应该花时间阅读一本(或者更多)关于这个主题的入门书。

假设
(person\u ows,person\u ows)的组合是唯一的

select person_ows,
       person_is_owed,
       amount, 
       (select t2.amount 
        from the_table t2
        where (t2.person_ows, t2.person_is_owed) = (t1.person_is_owed, t1.person_ows)) 
from the_table t1

“文件中的以下3个字段”在SQL中,数据存储在表而不是文件中。这些部分称为列而不是字段。另外:您使用的是哪种数据库管理系统?您能解释一下文件内容的含义吗?ie:这是因为不同的人互相欠钱吗?列定义/名称是什么?所需的输出格式是什么?既然你有平面文件,为什么要涉及SQL?我正遭受着“问题禁令”,因为(我想)问题质量很差。这个问题已经被分配了两张反对票,我想把它去掉。在这种特殊情况下,我应该如何解决这个问题?我不敢删除它,因为它显然没有帮助。谢谢你,太好了,汤姆。工作起来很有魅力。谢谢我不打算“大量”使用SQL,但我意识到绝对需要投资一本书。如果您愿意建议,我们将不胜感激。W3schools.com是一个很好的参考,Udemy有一些免费的SQL教程(我不能说质量有多高,因为我从未使用过它们),否则只需谷歌“SQL for初学者”,您应该可以找到很多。另外,如果这个答案涵盖了你的问题,请不要忘记将它标记为“正确”答案,以便将来其他人可以更容易地找到它。Thnx to u以及ahwnn
select person_ows,
       person_is_owed,
       amount, 
       (select t2.amount 
        from the_table t2
        where (t2.person_ows, t2.person_is_owed) = (t1.person_is_owed, t1.person_ows)) 
from the_table t1