2 запроса к базе, нужно обьединить в один

Статус
В этой теме нельзя размещать новые ответы.

eugenel

Постоялец
Регистрация
3 Авг 2008
Сообщения
125
Реакции
13
Есть такие 2 запроса к базе. Можно ли обьединить это все в один, без потери смысла?
PHP:
$result_cats = $db->query( "SELECT id FROM " . PREFIX . "_category WHERE alt_name='00277'" );
 $row_catels = $db->get_row($result_cats);
$result_catw = $db->query( "SELECT id FROM " . PREFIX . "_category WHERE parentid='".$row_catels['id']."'" );

echo $db->num_rows($result_catw);
 
Видимо так
PHP:
$result_catw = $db->query( "SELECT id FROM " . PREFIX . "_category WHERE alt_name='00277' AND parentid='".$row_catels['id']."'" );

echo $db->num_rows($result_catw);
 
Скорее всего имелось ввиду ИЛИ:

PHP:
$result_catw = $db->query( "SELECT id FROM " . PREFIX . "_category WHERE alt_name='00277' OR parentid='".$row_catels['id']."'" );

echo $db->num_rows($result_catw);

Тоесть вернётся два результата
 
Вижу 2 ответа.
Но не могу понять, а где же вы берете $row_catels['id']?
И вообще, не проверил, но видно на первый взгляд, что СМЫСЛ моих запросов и ваших, а тем более результат - разный :) Или я не прав?
Мой запрос:
1) Делаем запрос и узнаем $row_catels['id'].
2) Делаем запрос, чтобы узнать, сколько записей содержится в базе, где parentid совпадает с $row_catels['id'].
Ваши запросы, я так не могу прочитать.
 
PHP:
$result_catw = $db->query( "SELECT id FROM " . PREFIX . "_category WHERE parentid=(SELECT id FROM " . PREFIX . "_category WHERE alt_name='00277')" );
echo $db->num_rows($result_catw);
 
А в плане нагрузки, последний варинт или мой лучше?
 
Ну, по-моему, тут нагрузки практически никакой в обоих случаях. Я просто написал так, чтобы выполнить запрос один раз. Единственное отличие, наверное, в том, что не надо два раза посылать запрос к БД.
 
Ну, по-моему, тут нагрузки практически никакой в обоих случаях. Я просто написал так, чтобы выполнить запрос один раз. Единственное отличие, наверное, в том, что не надо два раза посылать запрос к БД.
В нагрузке разница есть. Если выборка вложенного запроса большая, то вложенные запросы обычно не используют.(напиши бинчмарк и проверь) А если так хочеться объеденить, то лучше использовать префикс.
 
В нагрузке разница есть. Если выборка вложенного запроса большая, то вложенные запросы обычно не используют.(напиши бинчмарк и проверь) А если так хочеться объеденить, то лучше использовать префикс.
Ну так то да. Но в данном случае выборка всего по одному параметру + нужна только первая(если не единственная) запись.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху