gpt4 book ai didi

mysql - 当第二个表有多个应该匹配的条件时,从多个表中查询

转载 作者:行者123 更新时间:2023-11-29 05:58:10 26 4
gpt4 key购买 nike

我正在尝试编写一个 MySQL 查询,它从两个不同的连接表中获取数据。前段时间我已经偶然发现了类似的情况,一些 Stackoverflower 帮助我解决了这个问题,但现在,试图从他的解决方案开始,我无法弄清楚我应该如何修改当前问题的查询。

假设我有这两个表:

交易

-------------------------------------
| TransactionId | Currency | Amount |
-------------------------------------
| 1 | EUR | 15.00 |
| 2 | EUR | 39.50 |
| 3 | USD | 10.00 |
-------------------------------------

事务路径

---------------------------------------------------------------------------------
| TPathId | TPathType | TPathDirection | TPathLink | transactions_TransactionId |
---------------------------------------------------------------------------------
| 1 | 'bank' | 'to' | 1 | 1 |
| 2 | 'bank' | 'from' | 2 | 1 |
| 3 | 'account' | 'from' | 1 | 1 |
| 4 | 'account' | 'to' | 2 | 1 |
| 5 | 'bank' | 'to' | 3 | 2 |
| 6 | 'bank' | 'from' | 2 | 2 |
| 7 | 'bank' | 'to' | 4 | 3 |
| 8 | 'account' | 'from' | 1 | 3 |
---------------------------------------------------------------------------------

基本上,这两个表存储在我的网站上发生的交易,并在 Transaction_Paths 表中包含有关这些交易的信息。 Transactions 表中的每一行可能通过 Transaction_paths.transactions_TransactionId 字段在 Transaction_Paths 表中有多个附加行。

我如何编写一个查询,查询出“来自”ID 为 1 的帐户并ID 为 4 的银行的确切交易?

基于 the previous question that I asked ,以及它的答案,我应该使用 HAVING,但是当我有多个条件应该在第二个表上匹配时,我如何使用 having?

编辑: 预期结果应该是仅返回 Transactions 表的第三行,如该行中的 TransactionId共 3 个。

最佳答案

为了达到你想要的输出你需要做一个三级联left join Transaction_Paths Left join Transaction_Paths left join Transactions。第一个左连接(自连接 Transaction_Paths Left join Transaction_Paths)将没有条件,但第二个左连接将打开(Transaction_Paths.transactions_TransactionId = Transaction_Paths.TransactionId)。

我为此做了一个伪查询来给你一个想法如下:

SELECT c.*
FROM Transaction_Paths a
LEFT JOIN Transaction_Paths b
LEFT JOIN Transactions c ON (a.transactions_TransactionId = c.TransactionId)
WHERE a.TPathDirection = "from" AND a.TPathLink = 1 AND b.TPathDirection = "to" AND b.TPathLink = 4

希望您可以使用自己喜欢的查询控制台提出适当的查询。或者使用 fiddle (例如 SQL fiddle)分享您的架构,我将尝试构建准确的查询并编辑这篇文章。

关于mysql - 当第二个表有多个应该匹配的条件时,从多个表中查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47437997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com