gpt4 book ai didi

mysql - 我无法连接 3 个表,其中一个表的列连接了两次

转载 作者:行者123 更新时间:2023-11-30 22:17:41 24 4
gpt4 key购买 nike

我有三个表,users 表,family 表和 family_relation 表。用户表有所有成员,家庭表有两列 relation_id 和 relation_name。 Family_relation 表有 3 列,member_id、second_member_id 和 relation_id。

在 family_relation 表中,我有这两行 1, 3, 1 和 1, 2 ,2 应该转换为 member_id -> 1 second_member_id -> 3 并且他们的关系是已婚的。

下一行应该翻译成成员 1 和成员 2 是 sibling 。当我将这三个表连接在一起时,我将“member_id”转换为用户表中的名称,但我似乎无法将“second_member_id”转换为用户表中的名称。家庭表也翻译得很好。

另外,如果表的结构和它们之间的关系不好,请告诉我如何有一个有效的替代方案。

这是我的代码

SELECT family_relation.*, users.firstName, '+
' family.relation FROM family_relation '+
' JOIN users ON users.id = family_relation.member_id'+
' JOIN family on family.id = family_relation.relation_id '+
' WHERE family_relation.member_id = ?'+
' UNION SELECT family_relation.*, users.firstName,'+
' family.relation FROM family_relation'+
' JOIN users ON users.id = family_relation.member_id'+
' JOIN family on family.id = family_relation.relation_id'+
' WHERE family_relation.second_member_id = ?'

输出:

[ RowDataPacket {
member_id: 11,
second_member_id: 40,
relation_id: 2,
firstName: 'Thomas',
relation: 'Child' },
RowDataPacket {
member_id: 11,
second_member_id: 31,
relation_id: 2,
firstName: 'Thomas',
relation: 'Child' },
RowDataPacket {
member_id: 11,
second_member_id: 42,
relation_id: 1,
firstName: 'Thomas',
relation: 'Spouse' } ]

我在这里使用 union 是因为当用户传递一个 id 时,它可能是 second_member_id 等于传递的 id。输出应该是这样的,用户传递一个 id,循环通过表 family_relation,然后输出应该是 Thomas 与 Diana 的关系(已婚/ child /兄弟等)或 Diana 与 Thomas 的关系(已婚/ child /兄弟等)。

最佳答案

那是因为您需要两次加入 user 表,一次是通过 member_id ,一次是通过 second_member_id

我不明白你的代码在做什么,所以我只看它的第一部分:

SELECT family_relation.*, users.firstName,sec_u.first_name '+
' family.relation FROM family_relation '+
' JOIN users ON users.id = family_relation.member_id'+
' JOIN users sec_u ON sec_u.id = family_relation.second_member_id'+
' JOIN family on family.id = family_relation.relation_id '+
' WHERE family_relation.member_id = ?'+

关于mysql - 我无法连接 3 个表,其中一个表的列连接了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37696889/

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