Php 连接3个表;从特定组中选择一个列表
我有三张桌子 表1:小组 表2:就业 表3:用户 如果我是一个用户,例如C,我会查找一个页面,其中有一个表,其中有两列USERS | JOB “用户”列应填写共享同一组的所有用户。“作业”列应填写特定组的所有名称和作业,如下所示: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
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