我希望我的两个表之间存在双向关系,这种关系与一对多的关系有关。
所以,我有一个User
表,其中包括user_id
和transaction_id
等列(以及其他用户数据列)。
我有另一个名为transaction
的表,它有像transaction_id
和user_id
这样的列(用于指代此特定事务所属的用户)。
现在,问题是,特定用户可以附加多个事务,这意味着,此事务表可以为同一用户提供多行。这使我可以通过连接查询轻松获取用户详细信息。但我想把这种关系双向化。
如果我拥有的是用户详细信息,我应该能够获得该人的交易详情。但是,因为用户可以同时拥有多个事务,我无法编写连接查询。
因此,我还没弄明白如何为特定用户存储两个事务ID,请记住我应该能够创建一个具有用户详细信息的连接查询(我总是可以以数组的形式存储事务ID) ,但这不会让我的连接查询发生)。
假设这个表结构:
交易
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(t0
)检索给定的事务,然后列出由同一个用户(t
)进行的所有交易。
SELECT
u.id,
u.name,
u.email,
t.id,
t.tdate,
t.amount
FROM
users u
INNER JOIN transactions t0 ON t0.user_id = u.id
INNER JOIN transactions t ON t.user_id = u.id
WHERE
t0.id = ?
ORDER BY
u.id,
t.tdate