Здравствуйте, помогите составить SQL запрос.
Нужно выбрать все направления изучения языка одним запросом
Чтобы получилось следующее:
Английский для начинающих ( 5)
Английский для детей ( 7)
Английски индивидуально ( 3)
Английский .....
Сейчас делаю так:
Сначала получаю id направления и количество школ
CODE ( SQL):
скопировать код в буфер обмена
$lang_id = (!empty($_GET['lang_id'])) ? intval($_GET['lang_id']):1; // если не выбран язык ставим ID языка по умолчанию $d = DB::run('SELECT d.id, SUM(IF(sf.teach_id IS NULL, 0, 1)) AS `count` FROM direction d LEFT JOIN school_filter sf ON (sf.direction_id = d.id) WHERE sf.lang_id = '.(int)$lang_id.' GROUP BY d.id'); while($row = $d->fetch()) { $direct[$row['id']] = $row['count']; }
Потом выбираю все направления и сливаю их вместе уже с количеством школ
CODE ( SQL):
скопировать код в буфер обмена
$a = DB::run('SELECT `id`, `name` FROM `direction` WHERE `lang_id` = '.(int)$lang_id); while($row = $a->fetch()) { $row['count'] = (array_key_exists($row['id'], $direct))? $direct[$row['id']]:0; $box[] = $row; }
Чувствую что можно получить всё это одним запросом, подскажите как это можно реализовать.
А вообще будет помимо направлений фильтроваться будет и по районам станциям метро и тд.
Подскажите как лучше это все реализовать, голову сломал уже
|