у меня 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), результатом, который я бы искал, была страница, на которой есть таблица с двумя столбцами (USERS | JOB).
Столбец ПОЛЬЗОВАТЕЛИ должен быть заполнен всеми пользователями, которые входят в одну и ту же группу. Столбец JOB должен быть заполнен всеми name_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? Почему в последней строке буква u (от пользователя I)? Можете ли вы мне помочь? Заранее спасибо :)
Рассмотрите возможность решения проблем с отображением данных в коде приложения.