Vladislav
а хевинг вернет 3
Vladislav
Так?
The Ant
хевинг ничего не веренет ) Он условие
The Ant
чтобы сравнить количество записей, тебе их нужно получить для начала
The Ant
это количество
The Ant
не обязательно с каунтом, есть и другие функции, но да.
Vladislav
И еще, having работает в контексте группы?
The Ant
наскоко помню да, ознакомься с маном. я могу пиздеть по памяти )
Vladislav
having count(parent_type_filter)=2
Vladislav
и я теряю эту запись
Vladislav
->groupBy('products.id')
Vladislav
Группирую по id
The Ant
все верно
The Ant
иды же одинаковые, они и сгруппировались
Vladislav
он же не видит что схлопнулось 2
Vladislav
Проще говоря добится доп поля в который положится число групп фильтров
Vladislav
?
Vladislav
и после группировкми уже having по этому полю
Vladislav
Хотя опять же вопрос, как получить в контексте группы до группировки
Vladislav
просто подставив в селект возвращяет вообще 8
The Ant
The Ant
и узнал что хавинг работает в контексте группировки
The Ant
смотри по нормальному запросу, а не по той херне, что ты сейчас делаешь
Vladislav
The Ant
по чистому sql
Vladislav
select *,products.name as name, companies.name as company_name,companies.url as url_company, products.url as url, section.url as url_section_company,products.id as id,products.img as img,secProd.url as url_section from products left join catalog_filters on catalog_filters.catalog_id = products.id left join filters on catalog_filters.filter_id = filters.id left join companies on companies.id = products.company_id left join company_section on company_section.company_id = companies.id left join section on section.id = company_section.section_id left join section as secProd on secProd.id = products.place where catalog_filters.filter_id in (2, 12) and filters.parent_type_filter in (1, 4) group by products.id order by products.name asc
Vladislav
5 ctr
Vladislav
сек
Vladislav
удалю лишние джойны
Vladislav
по чистому sql
понятно вот и ответ, после удаления дополнительных join все работает как часы
The Ant
не ответ
The Ant
select *
The Ant
1 ошибка
Vladislav
The Ant
это все ломает
Vladislav
это все ломает
а, но ломает когда я дополнительно джоиню компнию
The Ant
выбирай то что тебе нужно, и явно указывай что выбирать, для начала
Vladislav
сейчас попробую вручную перебрать поля , что мне нужны выкинув *, но тут скорее нужно всем id дать алиас
The Ant
select products.*, companies.*,
The Ant
типо того, тока не звездочками, а что нужно
The Ant
далее, не виден хевинг
Vladislav
сейчас он точно есть не понимаю как он прошлый раз потерялся
The Ant
parent_type_filter откуда он берется?
The Ant
filters.parent_type_filter
Vladislav
parent_type_filter откуда он берется?
Catalog::leftJoin('catalog_filters', 'catalog_filters.catalog_id', 'products.id')
->leftJoin('filters', 'catalog_filters.filter_id', 'filters.id')
Vladislav
Да
The Ant
так и указывай
The Ant
типа:
select products.id, products.name, companies.id, companies.name, COUNT(filters.parent_type_filter) as filters_num,
...
group by products.id
having filters_num = 2
order by products.name asc
The Ant
в целом запрос говно. сломается на дефолтном конфиге 5.7 мускула
Vladislav
Vladislav
пока тестирую проблем нет, пока не начинаешь join ить дополнительные таблицы
Vladislav
select *,products.name as name from products left join catalog_filters on catalog_filters.catalog_id = products.id left join filters on catalog_filters.filter_id = filters.id where products.place in (34, 35, 36, 39, 38, 37) and catalog_filters.filter_id in (2, 12) and filters.parent_type_filter in (1, 4) group by products.id having count(filters.parent_type_filter)=2 order by products.name asc
Vladislav
select * тоже не ломает ничего, но потом наверное исправлю
The Ant
ломает
The Ant
просто мускул тебе прощает
Vladislav
единственное нужно unique добавить
The Ant
сам подумай. как он будет группировать, если у тебя там уникальных значений вагон?
The Ant
не просто вагон, дохуя и больше
Vladislav
The Ant
с каждой таблицы вылезают все значения в строку, и это формирует уникальность строки
The Ant
нет
The Ant
логика у тебя не правильная
The Ant
смотри
The Ant
ты выбираешь продукты, как основную таблицу, и джойнишь к ней допустим компании
The Ant
не знаю как там у тебя устроено, просто предполагаю
Vladislav
The Ant
у 1 продукта 2 компании поставщика, или производителя (носки черные, ооо рога и носки черные, ооо копыта)
The Ant
просто пример, абстрактный.
The Ant
вот. ты выбираешь эти две таблицы
The Ant
1 | носки черные | рога
1 | носки черные | копыта
Vladislav
The Ant
1 это ид товара
The Ant
второй название товара