Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте. Помогите изменить запрос, так как он что то слишком тяжело работает, а я только начинаю разбираться в оптимизации.
Смысл - есть таблица компаний(1 таблица), у каждой компании могут быть проекты двух видов( то есть 2 таблицы. ) . У каждого проекта есть файлы. (уже четвёртая таблица). Проблема в том, что связь компании и файлов идёт через таблицы проектов.
SELECT f.fid,f.uid,f.filename,f.filepath,f.filemime,f.entity_type,f.entity_id,f.hidden_files,
(CASE WHEN f.entity_id=p.id THEN p.id ELSE pt.id END) as project_id,
(CASE WHEN f.entity_id=p.id THEN p.vacancy ELSE pt.task END) as project_vakancy,
(CASE WHEN f.entity_id=p.id THEN p.company_id ELSE pt.company_id END) as company_id
FROM files as f, projects as p, projects_talking as pt
WHERE (f.entity_id = pt.id AND f.entity_type = "project_talking" AND pt.company_id = ? )
OR ( p.company_id = ? AND f.entity_id = p.id AND f.entity_type = "project" ) GROUP BY f.fid
Итог запроса - С помощью кейса получаю таблицу, где в одно поле вставляю нужное значение и получается и получается такая удобная маленькая таблица из четырёх таблиц.
Не в сети
Страницы 1