Php 连接3个表;从特定组中选择一个列表

Php 连接3个表;从特定组中选择一个列表,php,mysql,subquery,inner-join,aggregate-functions,Php,Mysql,Subquery,Inner Join,Aggregate Functions,我有三张桌子 表1:小组 表2:就业 表3:用户 如果我是一个用户,例如C,我会查找一个页面,其中有一个表,其中有两列USERS | JOB “用户”列应填写共享同一组的所有用户。“作业”列应填写特定组的所有名称和作业,如下所示: LOGIN: C |---------------|---------------| | user | job | |-------------------------------| | C

我有三张桌子

表1:小组

表2:就业

表3:用户

如果我是一个用户,例如C,我会查找一个页面,其中有一个表,其中有两列USERS | JOB

“用户”列应填写共享同一组的所有用户。“作业”列应填写特定组的所有名称和作业,如下所示:

         LOGIN: C
|---------------|---------------|
|  user         |       job     |
|-------------------------------|
|    C          |       name_4, |
|               |       name_5, |
|               |       name_6  |
--------------------------------|
|    D          |       name_4, |
|               |       name_5, |
|               |       name_6  |
--------------------------------|
我尝试过使用这段代码,但结果是我可以阅读与我共享同一组的人,但我无法阅读这些工作

SELECT users.* jobs.* 
FROM users JOIN jobs ON users.id_job=jobs.id_job 
WHERE job.id_group IN 
(SELECT job.id_group 
FROM users JOIN jobs ON users.id_job = jobs.id_job 
WHERE users.user= '$login')

我们将提前感谢您的帮助。

如果我没有听错,您希望列出用户所属组的所有作业。一个选项使用相关子查询和字符串聚合:

select u.*,
    (
        select group_concat(j1.name_job order by j1.id_job)
        from jobs j
        inner join jobs j1 on j1.id_group = j.id_group
        where j.id_job = u.id_job
    ) as job_names
from users u

考虑应用程序代码中的数据显示问题,谢谢您的帮助。我正在研究你的代码,但有些元素我不明白。j和j1之间有什么区别?为什么在用户I的最后一行中有一个u?你能帮我吗?提前感谢您:
         LOGIN: C
|---------------|---------------|
|  user         |       job     |
|-------------------------------|
|    C          |       name_4, |
|               |       name_5, |
|               |       name_6  |
--------------------------------|
|    D          |       name_4, |
|               |       name_5, |
|               |       name_6  |
--------------------------------|
SELECT users.* jobs.* 
FROM users JOIN jobs ON users.id_job=jobs.id_job 
WHERE job.id_group IN 
(SELECT job.id_group 
FROM users JOIN jobs ON users.id_job = jobs.id_job 
WHERE users.user= '$login')
select u.*,
    (
        select group_concat(j1.name_job order by j1.id_job)
        from jobs j
        inner join jobs j1 on j1.id_group = j.id_group
        where j.id_job = u.id_job
    ) as job_names
from users u