Присоединяйтесь к 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), результатом, который я бы искал, была страница, на которой есть таблица с двумя столбцами (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')

Ваша помощь приветствуется заранее.

Рассмотрите возможность решения проблем с отображением данных в коде приложения.

Strawberry 21.12.2020 13:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если я правильно вас понимаю, вам нужен список всех заданий группы, к которой принадлежит пользователь. Один вариант использует коррелированный подзапрос и агрегацию строк:

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)? Можете ли вы мне помочь? Заранее спасибо :)

Prest89 21.12.2020 19:32

Другие вопросы по теме