MySQL 3 表组合成 1 行 2 个值

mysql 3 table combination into 1 row with 2 values

提问人:HenrijsS 提问时间:12/3/2019 最后编辑:Mark RotteveelHenrijsS 更新时间:12/3/2019 访问量:243

问:

因此,我正在使用 Swing 在 Java 中创建一个银行应用程序。 我为事务日志创建了一个 mysql 表,它包含以下列。
enter image description here
所以我还有另外 2 个表 - 用户和帐户。 我想知道,我怎样才能从表 users 中选择 user.name 和 user.lastname - WHERE transaction_log.from_user=9;

我什至不知道如何启动查询或使用哪个连接。 同样的本金进入账户。我想选择具有 from_account=1 的每一行,同时还显示来自 to_account 的信息。

我完全迷失了。如果需要更多内容,我会编辑帖子。

这里将是带有关系的表结构。enter image description here

MySQL 数据库

评论

0赞 Istiaque Hossain 12/3/2019
给出所有三个表结构的关系...............
0赞 HenrijsS 12/3/2019
@IstiaqueHossain 更新了帖子。

答:

2赞 Istiaque Hossain 12/3/2019 #1

您的第一个查询将如下所示

SELECT u.name , u.lastname FROM transaction_log trn
INNER JOIN user u ON (u.id = trn.from_user)
WHERE  trn.from_user = 9;

甚至您可以使用 instate 的...... 对于第二个查询,您可以自己尝试...我会帮助你的LEFT JOININNER JOIN

评论

0赞 HenrijsS 12/3/2019
因此,为了获取所有数据,我必须进行多次查询,对吧?或者,也许我应该稍微改变一下数据库模型?
0赞 Istiaque Hossain 12/3/2019
您是否从此查询中获得了正确的数据?
0赞 HenrijsS 12/3/2019
是的,但问题是我需要来自同一个表 - 用户的 from_user 和 to_user 数据。这对我来说是一件非常复杂的事情,因为我对 Java + MySQL(使用 JDBC)很陌生;
0赞 Istiaque Hossain 12/3/2019
为此,您需要添加另一个,但它会引起性能问题。INNER JOIN
1赞 Istiaque Hossain 12/3/2019
SELECT u.name , u.lastname, concat(ud.name ,' ', ud.lastname) as to_user FROM transaction_log trn INNER JOIN user u ON (u.id = trn.from_user) INNER JOIN user ud ON (ud.id = trn.to_user) WHERE trn.from_user = 9;
0赞 HenrijsS 12/3/2019 #2

正如 Istiaque 在评论中提到的,这对我来说是正确的查询。

SELECT trn.id, fa.account_nr, CONCAT(tu.name , ' ', tu.lastname), 
ta.account_nr, trn.amount
FROM transaction_log trn
INNER JOIN users tu ON (tu.id = trn.to_user)
INNER JOIN accounts fa ON (fa.id=trn.from_account)
INNER JOIN accounts ta ON (ta.id=trn.to_account)
WHERE trn.from_user=9;

我没有意识到的是,你可以在同一张桌子上两次。现在这解决了我的问题。INNER JOIN