提问人:HenrijsS 提问时间:12/3/2019 最后编辑:Mark RotteveelHenrijsS 更新时间:12/3/2019 访问量:243
MySQL 3 表组合成 1 行 2 个值
mysql 3 table combination into 1 row with 2 values
问:
因此,我正在使用 Swing 在 Java 中创建一个银行应用程序。
我为事务日志创建了一个 mysql 表,它包含以下列。
所以我还有另外 2 个表 - 用户和帐户。
我想知道,我怎样才能从表 users 中选择 user.name 和 user.lastname - WHERE transaction_log.from_user=9;
我什至不知道如何启动查询或使用哪个连接。 同样的本金进入账户。我想选择具有 from_account=1 的每一行,同时还显示来自 to_account 的信息。
我完全迷失了。如果需要更多内容,我会编辑帖子。
答:
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 JOIN
INNER 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
上一个:将两个数组合并为多个对象
评论