对具有一对多关系的表执行双向联接查询

时间:2019-02-02 19:56:21

标签: mysql sql

我想有我的两个由一个一对多的关系相关的表之间的双向关系。

因此,我有一个User表,其中包含诸如user_idtransaction_id等的列(以及其他用户datails列)。

我还有另一个名为transaction的表,该表具有transaction_iduser_id之类的列(以引用此特定交易所属的用户)。

现在,问题是,特定用户可以将多个事务附加到其上,这意味着该事务表可以为同一用户提供多个行。这使我很容易通过联接查询获取用户详细信息。但我想使这个关系是双向的。

如,如果所有我拥有的是用户的详细信息,我应该能够得到该人的交易细节。但是由于一个用户可以一次进行多个事务,所以我无法编写联接查询。

因此,我还没有弄清楚如何为特定用户存储两个交易ID,请记住我应该能够进行包含用户详细信息的联接查询(我可以始终以以下形式存储交易ID:一个数组,但这不会让我的连接查询发生)。

1 个答案:

答案 0 :(得分:0)

假设此表结构为:

交易

id
user_id
tdate
amount

用户

id
name
email

您似乎已经知道,你可以列出用户的所有交易,与他的信息,一起:

SELECT
    u.id,
    u.name,
    u.email,
    t.id,
    t.tdate,
    t.amount
FROM 
    users u
    INNER JOIN transactions t ON t.user_id = u.id
WHERE
    u.id = ?
ORDER BY 
    u.id, 
    t.tdate

问号代表您要查看其交易的用户id。这将为用户的每次交易返回一条记录。

如果您要查找给定交易,列出同一用户的所有其他交易,则一种解决方案是向查询添加另一个联接:基本上,这将首先通过id({{1 }},然后列出同一用户(t0)的所有交易。

t