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



我有3个表

表#1:分组

|---------------|---------------|
|  id_group     |    Name       |
|-------------------------------|
|    1          |    Group 1    |
--------------------------------|
|    2          |    Group 2    |
--------------------------------|
|    3          |    Group 3    |
--------------------------------|

表#2:作业

|---------------|---------------|----------------------|
|     id_job    |    id_group   |      name_job        |
|---------------|--------------------------------------|
|      1        |    1          |       name_1         |
-------------------------------------------------------|
|      2        |    1          |       name_2         |
-------------------------------------------------------|
|      3        |    2          |       name_3         |
-------------------------------------------------------|
|      4        |    3          |       name_4         |
-------------------------------------------------------|
|      5        |    3          |       name_5         |
-------------------------------------------------------|
|      6        |    3          |       name_6         |
-------------------------------------------------------|

表#3:用户

|---------------|---------------|
|  user         |    id_job     |
|-------------------------------|
|    A          |       1       |
--------------------------------|
|    B          |       1       |
--------------------------------|
|    C          |       4       |
--------------------------------|
|    D          |       6       |
--------------------------------|

如果我是一个用户(例如C(,我会查找一个页面,其中有一个包含2列的表(USERS|JOB(。

USERS列中应填写共享同一组的所有用户。JOB列应填写特定组组的所有名称_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

相关内容

  • 没有找到相关文章

最新更新