Я работаю на запрос, где я тянуть данные из нескольких таблиц с использованием левого присоединяется так:возвращаемый результат объекта из PHP дб запроса
$query = " SELECT users.name, users.email, address.street, address.city, address.state, address.zip FROM users LEFT JOIN( SELECT addresses.street, addresses.city, addresses.state, addresses.zip, `addresses.user_id ` FROM addresses ) AS address ON users.id = `address.user_id` WHERE users.id = 1"; $mysql = new mysql(HOST, USER, PASS, DBNAME); $result = $mysql->query($query)->fetch_object();
Результаты, которые я получаю сейчас я могу получить доступ к результатам, как это:
// get name $result->name; //get street address $result->street;
Поскольку запрос в конечном итоге станет чем-то более сложным, чем это. Я хотел бы быть в состоянии получить доступ к данным, как это:
// get user name $result->user->name; // get the street address $result->address->street;
Это поможет сделать данные легче читать, так как некоторые из таблицы аналогичным образом с именем поля.
Любая помощь будет большой благодарностью.
EDIT: (в ответ на Стив)
Я знаком с ORMs, и я в настоящее время с помощью платформы Kohana. Я заинтересован в сокращении фактического количества запущенных запросов. ORM в структуре Kohana вызывает «SELECT *» для каждой таблицы/модели, которую вы вызываете. Я бы предпочел не делать этого, если мне это не нужно.
Выполнение двух отдельных запросов (как показано в примере) не так уж и важно, но в моем реальном примере я буду извлекать данные из примерно 10 отдельных таблиц, поэтому я бы предпочел не запускать отдельные запросы для получить функциональность, которую я описывал
Почему подзапрос? Почему бы вам не присоединиться к адресам? – outis
@outis, я не совсем уверен, что отвечает на мой вопрос, но не могли бы вы привести пример? Мой SQl не самый большой – iangraham