MySQL连接表连接

MySQL连接表连接,mysql,Mysql,我要求将与会话相关的所有教育者作为串联列表返回,但要在联接中执行(不要问-我知道有多种方法,但我使用的库不接受这些方法;-)) 我有一个sessions表,其中包含session\u id和session\u名称 | session_id | session_name | +------------+--------------+ | 1 | Swimming | | 2 | Chess | 我有一个会话id表,它基本上是一个连接表会话

我要求将与会话相关的所有教育者作为串联列表返回,但要在联接中执行(不要问-我知道有多种方法,但我使用的库不接受这些方法;-))

我有一个
sessions
表,其中包含
session\u id
session\u名称

| session_id | session_name |
+------------+--------------+
| 1          | Swimming     |
| 2          | Chess        |
我有一个
会话id
表,它基本上是一个连接表
会话id
联系人id

| session_id | contact_id |
+------------+------------+
| 1          | 1          |
| 1          | 2          |
| 2          | 3          |
| 2          | 4          |
我有一张
联系人
表格,上面有
联系人id
全名

| contact_id | full_name    |
+------------+--------------+
| 1          | Fred Bloggs  |
| 2          | Mary Bloggs  |
| 3          | Mark Smith   |
| 4          | Shelly Smith |
到目前为止,这似乎是我最接近的一次:

SELECT
    sessions.session_id,
    sessions.name,
    educators.names
FROM
    `sessions`
LEFT JOIN
    (
        SELECT
            GROUP_CONCAT(contacts.full_name SEPARATOR ', ') as names
        FROM
            `contacts`
        WHERE
            contact_id 
        IN 
            (
                SELECT
                    contact_id
                FROM
                    session_educator
                WHERE
                    session_educator.session_id = sessions.session_id
            )
    ) `educators`
USING
    (`session_id`)
但我真的在黑暗中摸索着想弄明白,有人能帮忙吗

正如您可能从查询中看到的,我想要的是这样的结果:

| session_id | session_name | educators                |
+------------+--------------+--------------------------+
| 1          | Swimming     | Fred Bloggs, Mary Bloggs |
| 2          | Chess        | Mark Smith, Shelly Smith |

非常感谢您的帮助,即使只是说这件事做不到

对此不需要子查询。它是几个连接和一个聚合:

select s.session_id, s.session_name,
       group_concat(e.name separator ', ') as educators
from sessions s left join
     session_educators se
     on se.session_id = s.session_id left join
     educators e
     on e.educator_id = se.educator_id
group by s.session_id;

我确实相信,您正在使这一切变得比需要的复杂一点(除非我在您的需求中遗漏了一些东西?我知道库可能会有多痛苦…)

这对我很有效:

SELECT
    session_id,
    session_name,
    (
        SELECT
            GROUP_CONCAT(full_name SEPARATOR ', ') as names
        FROM
            contacts c,
            session_educators se
        WHERE
            c.contact_id = se.contact_id
        AND
            se.session_id = s.session_id
    )
FROM
    sessions s
;

也谢谢你,也算是请客了。我真的很爱你:-)