Как правильно составить mysql запрос?

программирование php MySQL базы данных sql

Есть 2 таблицы t1 и t2:
t1->
id name
1 n1
2 n2
t2->
id cat val
1 2 6
2 2 9

Как одним запросом, можно выбрать из таблицы t1 строку с id=2 и присоединить сюда из таблицы t2 ВСЕ строки у которых cat(из t2) равен id(из t1).
Хочу получить такой массив:

Array ( [0] => stdClass Object (
[id] => 2
[name] => n2
array([0] => stdClass Object (
[cat] => 2
[val] => 6
)
array([1] => stdClass Object (
[cat] => 2
[val] => 9
)
)
)

До чего додумался:
SELECT c.id, c.name, i.cat, i.val FROM t1 AS c LEFT JOIN t2 as i ON c.id=i.cat WHERE c.id=2

Но возвращается не в таком виде как хочу. Вложенные массивы отсутствуют, вместо этого появляется 2 объекта с одинаковыми id и name но разными cat и val

За раннее спасибо за помощь!
Ответы:
Селект возвращает одномерный массив, как ни крути. Мой совет - если таблицы небольшие просто вылей обе таблицы в память и в цикле засунь в массивы. Если большие - держи в памяти только главную, а второстепенные подтягивай запросом по мере надобности. Если и главная тоже большая - то ничего не прокешируешь, придётся всегда дёргать запросом.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.