Правильная реализация запроса.

Pavel6

Новичок
Правильная реализация запроса.

Помогите пожалуйста с Sql запросам.
Данный запрос работает правильно, но мне кажется что это не лучшая схема реализации его.

select feature.*,count(restaurants.id) as restaurant_count from feature Left Join keys_restaurants_feature ON keys_restaurants_feature.feature_id=feature.id Left Join keys_restaurants_kitchens ON keys_restaurants_kitchens.kitchen_id='3' Left Join restaurants ON restaurants.id=keys_restaurants_feature.restaurant_id AND restaurants.city_id='12' AND restaurants.id=keys_restaurants_kitchens.restaurant_id Group By feature.id order by feature.id asc

Запрос выведит данные из таблицы feature с бодсчетом количества данных в таблицы restaurants, т.е. сколько restaurants относится к feature.

keys_restaurants_feature хранит два поля restaurant_id - это ID ресторана из таблицы restaurants и feature_id - это ID из таблицы
feature.

также и таблица keys_restaurants_kitchens имеет два поля restaurant_id и kitchen_id

При получение результата count(restaurants.id) as restaurant_count количества, на этот результат влияет отношение к городу restaurants.city_id='12'

В общем у нас таблица feature выводит все данные, а входящие Left Join-ы для получения результата количеств ресторанов.
 

zerkms

TDD infected
Команда форума
но мне кажется что это не лучшая схема реализации его.
что ты вкладываешь в это слово? он делает свою работу? делает свою работу медленно? покажи EXPLAIN?
 

Pavel6

Новичок
Автор оригинала: zerkms
что ты вкладываешь в это слово? он делает свою работу? делает свою работу медленно? покажи EXPLAIN?
Вот EXPLAIN:

1 SIMPLE feature index NULL PRIMARY 4 NULL 6
1 SIMPLE keys_restaurants_feature ref feature_id feature_id 4 1gbua_rest.feature.id 1
1 SIMPLE keys_restaurants_kitchens ref kitchen_id kitchen_id 4 const 1
1 SIMPLE restaurants eq_ref PRIMARY PRIMARY 4 1gbua_rest.keys_restaurants_feature.restaurant_id 1
 

zerkms

TDD infected
Команда форума
перепость табличкой, в тегах code
а то нихера непонятно :)
 
Сверху