Тема: Использование оператора JOIN

Возможно ли за один вопрос выбрать из 2х таблиц данные, чтобы они представляли следующий массив:

Array(
     [0]=>Array(
            [ID] => 1
            [NAME] => Валера
            [CARS] => Array(
                  [0] => Жигули
                  [1] => Мерседес
            )
     )
)

вместо

Array(
     [0]=>Array(
            [ID] => 1
            [NAME] => Валера
            [CARS] => Жигули
     )
    [1]=>Array(
            [ID] => 1
            [NAME] => Валера
            [CARS] => Мерседес
     )
)

Имеются 2 таблицы, в одной поля ID, NAME, во второ таблице ID, ID_PEOPLE,CAR, где ID_PEOPLE соотносится с ID из первой таблицей. Вот и весь вопрос, хочется получить массив такого вида, можно конечно foreach, но может есть способ проще...

2

Re: Использование оператора JOIN

Единственный вариант, который я вижу - это использовать GROUP_CONCAT.

Обратите внимание, что надо преобразовать тип данных в строку. То есть:
CAST(GROUP_CONCAT(`field` SEPARATOR ',') AS CHAR)

Полученную строку затем разбить по разделителю с помощью функции PHP explode().

ВКонтакте Facebook Twitter

Re: Использование оператора JOIN

Спасибо за совет, ещё небольшой вопрос, я использую следующую конструкцию запроса:

SELECT * FROM peoples RIGHT JOIN cars ON peoples.ID=cars.ID_PEOPLEwhere peoples.ID=$ID

получается мне возвращает массив элементов с полями из этих таблиц, но суть в том, что у них у обоих есть поле ID и они разные, получается у меня в реультате таблица где ID = ID из таблицы cars, кроме того как поменять таблицы от этого не избавиться?

4

Re: Использование оператора JOIN

CrazyValenokBlg пишет:

в реультате таблица где ID = ID из таблицы cars, кроме того как поменять таблицы от этого не избавиться?

Пропишите алиас для полей с одинаковым именем.

SELECT `peoples`.*, `cars`.*, `peoples`.`id` AS `peoples_id`, `cars`.`id` AS `cars_id`
FROM `peoples` RIGHT JOIN `cars` ON `peoples`.`ID` = `cars`.`ID_PEOPLE` WHERE `peoples`.`ID` = $ID

ВКонтакте Facebook Twitter