[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оптимизация запроса.
bobo
Привет.
Как оптимизировать следущий код:


public function getSmList() {

$db = Connect::dbConnect();

$queryType = $db -> query("SELECT `id`, `smidobj`, `smnum`, `crdate`, `cruser`, `arnd`, `notpay`, `rursum`, `arnditsum` FROM `smetytb` WHERE `idmontazh` = '".$db -> real_escape_string(self::smType())."' ORDER BY `smnum` DESC;");

while ($arrayType = $queryType -> fetch_assoc()) {



//-----------------------------------------------------



$queryObjNum = $db -> query("SELECT `objidcl`, `objstreet`, `objhouse`, `objapartaments`, `objnum` FROM `objects` WHERE `id` = '".$arrayType['smidobj']."' LIMIT 1;");
$arrayObjNum = $queryObjNum -> fetch_assoc();

$queryClName = $db -> query("SELECT `clname` FROM `clients` WHERE `id` = '".$arrayObjNum['objidcl']."' LIMIT 1;");
$arrayClName = $queryClName -> fetch_assoc();

$queryObjStreet = $db -> query("SELECT `street` FROM `street` WHERE `id` = '".$arrayObjNum['objstreet']."' LIMIT 1;");
$arrayObjStreet = $queryObjStreet -> fetch_assoc();

$queryUserName = $db -> query("SELECT `fullname` FROM `users` WHERE `id` = '".$arrayType['cruser']."' LIMIT 1;");
$arrayUserName = $queryUserName -> fetch_assoc();

$querySmType = $db -> query("SELECT `type` FROM `userstype` WHERE `id` = '".$db -> real_escape_string(self::smType())."' LIMIT 1;");
$arraySmType = $querySmType -> fetch_assoc();



//-----------------------------------------------------



($arrayType['arnd'] == "1") ? $arndNotPay = "АР." :
((
$arrayType['notpay'] == "1") ? $arndNotPay = "БМ." : $arndNotPay = "");
(
$arrayObjNum['objapartaments']) ? $address = $arrayObjStreet['street']." ".$arrayObjNum['objhouse']." - ".$arrayObjNum['objapartaments'] : $address = $arrayObjStreet['street']." ".$arrayObjNum['objhouse'];

$data[] = array(

"id" => $arrayType['id'],

"smNum" => $arrayType['smnum']." - ".$arraySmType['type'],

"summAll" => $arrayType['rursum'],

"arndNotPay" => $arndNotPay,

"arndNotPaySumm" => $arrayType['arnditsum'],

"clName" => $arrayClName['clname'],

"objNum" => $arrayObjNum['objnum'],

"address" => $address,

"crDate" => $arrayType['crdate'],

"userName" => $arrayUserName['fullname']

);


}

Connect::dbClose();
return $data;

}


В частности интересует часть, выделенная комментарием.

Заранее благодарю!



Спустя 1 час, 32 минуты, 5 секунд (1.09.2011 - 16:24) inpost написал(а):
bobo
Почитай про LEFT JOIN, можно все это объединить в один большой запрос.
Или если и делать так, то запросов всего должно быть 6, первый выбирает из первой таблицы, создаёт массив, а далее к этому массиву присоединять данные из других таблиц.

Но я бы всё равно сделал бы через присоединение к таблице других таблиц.

Спустя 10 минут, 15 секунд (1.09.2011 - 16:35) bobo написал(а):
Спасибо, а что имеется в виду под "присоединением к таблице других таблиц" ?

Спустя 9 минут, 31 секунда (1.09.2011 - 16:44) inpost написал(а):
Про LEFT JOIN в запросе smile.gif Ну это я так выразился.

Спустя 1 минута, 51 секунда (1.09.2011 - 16:46) bobo написал(а):
Понял cool.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.