gpt4 book ai didi

mysql - 使用连接的多对多关系

转载 作者:行者123 更新时间:2023-11-29 15:04:41 25 4
gpt4 key购买 nike

我有一个数据库,两个表和一个链接表,我需要对其进行 JOIN 查询:

这是我的表格:

家族(用户 ID (int)、登录名等)
成员(memberid(int),loginName(这将成员链接到家庭),姓名等)

链接表:user2member (userid,memberid)...都是外键吗?

我想做两件事:

1) 能够让一个 family.loginName(12,Johnson) 订阅另一个 family.loginName (43,Smith) 并将其记录到链接表中。

看起来像这样:12,43

2)当我查询约翰逊家族中的所有member.name时,我将得到所有约翰逊家族和所有史密斯家族。

如果约翰逊 = 泰德、苏和帕蒂IF 史密斯=乔、苏和鲍勃

我的查询结果将是 Johnson now = Ted,Sue,Patty,Joe,Sue,Bob

几天前我问了这个问题,没有好的表名,最后我把自己和好人 Ollie Jones 搞混了,他为这个查询发布了与此类似的答案:

SELECT member.name
FROM family
JOIN user2member on family.userid = member.memberid
JOIN member on user2member.name = member.name
 WHERE family.userid = '30'
ORDER BY member.name

我必须更改 Ollie 的答案以匹配我的表格,但我在第 5 行收到限制错误 0,30。

这是我第一次做 JOINS,我不知道这是否正确。

谢谢

这是我的第一个问题的链接:mySQL table linking , group linked to other members lists, the displaying all members

最佳答案

我不确定您建议的表格是否可以解决您的问题。如果我理解你的问题正确的话,有两种关系:

  • 所有家庭成员的关系(约翰逊与 Ted、Sue、Patty、Smith 与 Joe、Sue、Bob)
  • 订阅关系(一个家庭可以订阅另一个家庭)

我建议使用下表:

  • 家庭(f_id、f_loginName 等)
  • member (m_id, m_f_id, m_name)(家庭的外键,多对一关系)
  • 订阅 (s_f_id,s_to_f_id)(链接基于两个系列 key )

这将产生以下内容:

family:
f_id f_loginName
12 Johnson
43 Smith

member:
m_id m_f_id m_name
1 12 Ted
2 12 Sue
3 12 Patty
4 43 Joe
5 43 Sue
6 43 Bob

subscription
s_f_id s_to_f_id
12 43

现在,为了获取特定系列及其订阅的所有可能成员,我将使用以下 SQL 查询。它为家庭及其家庭成员提供了简单的连接。在 WHERE 子句中,会获取 Johnson 家族 (f_id = 12),并且要从订阅中获取所有家庭成员,使用子查询会更容易。

SELECT f_loginName, m_name 
FROM family
INNER JOIN member ON m_f_id = f_id
WHERE f_id = 12
OR f_id IN (SELECT s_to_f_id FROM subscription WHERE s_f_id = 12)
ORDER BY f_loginName, m_name;

关于mysql - 使用连接的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2417419/

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