Оптимизировать запросы

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Доброе время суток :)

Изучая код движка, нашел в одном месте примерно такую штуку:

PHP:
$items = $db->query('SELECT * FROM `items`');
foreach($item = $items->fetch()){
        $item = $db->query('SELECT * FROM `descr` WHERE `id`='.$item['id'])->fetch();
        print_r($item);
}

То есть, сначала берем весь список из таблицы `items`, а потом берем описание для каждого итема отдельным запросом.

Как это оптимизировать?
 
Судя по тому, что написано, например вот так:
PHP:
$items = $db->query('SELECT * FROM `items`, `descr` WHERE `items.id` = `descr.id`');
foreach($item = $items->fetch()){
        print_r($item);
}
 
Судя по тому, что написано, например вот так:
PHP:
$items = $db->query('SELECT * FROM `items`, `descr` WHERE `items.id` = `descr.id`');
foreach($item = $items->fetch()){
        print_r($item);
}

А это как тогда?
PHP:
$items = $db->query('SELECT * FROM `items` WHERE `type`=4');
foreach($item = $items->fetch()){
        $item = $db->query('SELECT * FROM `descr` WHERE `id`='.$item['id'])->fetch();
        print_r($item);
}
 
PHP:
$items = $db->query('SELECT * FROM `items`, `descr` WHERE `type`=4' AND `items.id` = `descr.id`');
foreach($item = $items->fetch()){
        print_r($item);
}
 
А как сделать, чтобы если в `descr` нет такого ID, то из `items` всё равно взять запись?

Пример:
В `items` есть одна запись, в `descr` нет ничего. Надо всё равно взять запись из `items`, но написать что в `descr` к нему ничего нет.
 
PHP:
$items = $db->query('
SELECT * FROM `items` WHERE `type`=4
LEFT OUTER JOIN `descr` ON `items.id` = `descr.id`
');
foreach($item = $items->fetch()){
        print_r($item);
}
 
Назад
Сверху