SQL-запрос: группировка результатов из двух таблиц

0

Привет и спасибо заранее. У меня две таблицы:

пользователи

|- ID -|- NAME   -|
|- 1  -|- Will   -|
|- 2  -|- Isabel -|
|- 3  -|- Robert -|
|- 4  -|- John   -|
|- 5  -|- David  -|
|- 6  -|- Eric   -|

задачи

|- ID -|- USER -|- DESCRIPTION         -|
|- 1  -|- 1    -|- Clean floor         -|
|- 2  -|- 1    -|- Clean windows       -|
|- 3  -|- 2    -|- Repair an appliance -|
|- 4  -|- 3    -|- Buy spare parts     -|
|- 5  -|- 1    -|- Remove stains       -|
|- 6  -|- 2    -|- Pick up the lounge  -|

Мне нужна помощь для написания запроса для получения массива "Задачи" с помощью "user", что-то вроде следующего:

Array
(
    [0] => Array
        (
            [user] => 1
            [tasks] => Array
                (
                    [0] => Array
                        (
                            [id] => 1
                            [description] => Clean floor
                        )

                    [1] => Array
                        (
                            [id] => 2
                            [description] => Clean windows
                        )

                    [2] => Array
                        (
                            [id] => 5
                            [description] => Remove stains
                        )
                )
        )
    [1] => Array
        (
            [user] => 2
            [tasks] => Array
                (
                    [0] => Array
                        (
                            [id] => 3
                            [description] => Repair an appliance
                        )

                    [1] => Array
                        (
                            [id] => 6
                            [description] => Pick up the lounge
                        )
                )
        )
    [2] => Array
        (
            [user] => 3
            [tasks] => Array
                (
                    [0] => Array
                        (
                            [id] => 4
                            [description] => Buy spare parts
                        )
                )
        )
)
  • 2
    Я мог бы ожидать, что простое левое соединение между вашими таблицами будет работать здесь. Вы уже пробовали запрос и можете поделиться своим кодом PHP?
  • 3
    сначала сделайте выбор select, а затем переформатируйте массив в нужную вам структуру
Теги:
left-join

1 ответ

1

У MySQL нет "массивов". Возможно, использование group_concat() будет делать то, что вы хотите:

select t.user,
       group_concat(t.id, ':', t.description order by t.id) as tasks
from tasks t
group by t.user;
  • 0
    Извиняюсь за плохое выражение и описание окружающей среды. Конечно, я имел в виду получение массива в PHP. Этот ответ именно то, что мне было нужно. Проверено и работает. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню