mysql - 同一张表上的多个联接

标签 mysql sql

我正在尝试实现一个看似简单的查询,但我无法使其正常工作。这是我的数据库表结构:

members
    -> id
    -> last_name
    -> first_name
activities
    -> id
registrations
    -> id
    -> member_id
tandems
    -> id
    -> activitie_id
    -> registration_member_one
    -> registration_member_two

这就是我想要实现的目标:

多个成员(member)可以注册参加一项事件。然后,我将注册按串联进行分组。我想要一个列出所有串联的 View ,这就是我的问题。当我尝试查询时,它给出了多行,重复了很多次。

下面是我想要的表格示例:

tandems.id | activities.id | registration_member_one.members.last_name | registration_member_two.members.last_name
1          | 3             | John Doe                                  | Jane Doe

这是我正在处理的查询:

SELECT
tandems.*,
memberOne.id, memberOne.last_name, memberOne.first_name,
memberTwo.id, memberTwo.last_name, memberTwo.first_name,
memberOne_registration.member_id as memberOne,
memberTwo_registration.member_id as memberTwo

FROM tandems

JOIN registrations as memberOne_registration
ON memberOne_registration.member_id = tandems.registration_member_one
JOIN members as memberOne ON memberOne.id = memberOne_registration.member_id

JOIN registrations as memberTwo_registration
ON memberTwo_registration.member_id = tandems.registration_member_two
JOIN members as memberTwo ON memberTwo.id = memberTwo_registration.member_id

WHERE activitie_id = 3;

感谢任何帮助!

最佳答案

该错误是由于将 registrations 表的错误列 (member_id) 与 tandems 表连接所致,而不是列 registrations.id应该使用

SELECT
tandems.*,
memberOne.id, memberOne.last_name, memberOne.first_name,
memberTwo.id, memberTwo.last_name, memberTwo.first_name,
memberOne_registration.id as memberOne,
memberTwo_registration.id as memberTwo

FROM tandems
JOIN registrations as memberOne_registration ON memberOne_registration.id = tandems.registration_member_one
JOIN members as memberOne ON memberOne.id = memberOne_registration.member_id
JOIN registrations as memberTwo_registration ON memberTwo_registration.id = tandems.registration_member_two
JOIN members as memberTwo ON memberTwo.id = memberTwo_registration.member_id

WHERE activitie_id = 3;

关于mysql - 同一张表上的多个联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60368703/

相关文章:

java - 插入数据库

c# - .NET 中的 SQL 注入(inject)防护

sql - Stata odbc 获取列注释作为标签

java - 两个 "like"查询组合并排序

mysql - 停止在 tz 更改时自动更改 MySQL 中的日期

php - 使用php在mysql中插入拉丁字符?

php - MySQL查询与静态缓存的性能对比

mysql - 锁定整个单个表,但仍允许访问 MySQL 上同一 session 中的其他表

sql - 通配符 sql 仅字母字符

MySQL缺少约束索引