
Ad.x ??
22.07.2017
09:35:03
логика у тебя не правильная
смотри
ты выбираешь продукты, как основную таблицу, и джойнишь к ней допустим компании
не знаю как там у тебя устроено, просто предполагаю

Google

Vlad
22.07.2017
09:36:37

Ad.x ??
22.07.2017
09:36:57
у 1 продукта 2 компании поставщика, или производителя (носки черные, ооо рога и носки черные, ооо копыта)
просто пример, абстрактный.
вот. ты выбираешь эти две таблицы
1 | носки черные | рога
1 | носки черные | копыта

Vlad
22.07.2017
09:38:07

Ad.x ??
22.07.2017
09:38:07
1 это ид товара
второй название товара

Vlad
22.07.2017
09:38:19
1 компания публикует много обьявлений

Ad.x ??
22.07.2017
09:38:26
блять
ты пойми суть
пример АБСТРАКТНЫЙ
итак

Google

Ad.x ??
22.07.2017
09:38:52
ты группируешь по ид
по единичке
но у тебя две строчки уникальных из-за названия компании
как мускул это будет делать?
в строгом режиме он тебе просто выдаст ошибку. а в том что у тебя сейчас предположит что ты хотел последний выбрать
понял почему формируются уникальные строчки когда ты звезду втыкаешь?
у тебя по сути там ахулиард уникальных значений и как понять что там ломается и ебется... для меня лично загадка

Vlad
22.07.2017
09:45:34
понял почему формируются уникальные строчки когда ты звезду втыкаешь?
продукты 15 полей, когда мы джоиним новые таблицы, часть полей перезаписывается, например name есть у компании и у продукта чтобы этого избежать, в селекте есть после звездочки, products.name as name, companies.name as company_name. , тоже самое и с id , и далее в спорных связях можно указывать алиасы

Ad.x ??
22.07.2017
09:46:15
ну, часть перезаписывается. а остальные нет
кто знает что у тебя там есть вообще. как выход. Делаешь подзапрос на выборку товаров по критериями фильтра и потом к этому резульату джойнишь остальное
и за звезду надо пиздить ногами

Vlad
22.07.2017
09:47:30

Ad.x ??
22.07.2017
09:47:52
просто дампни результат
какой там массив получается в 1 строке
и попробуй это руками сгруппировать. поймешь сразу почему не получается

Vlad
22.07.2017
09:55:05

Ad.x ??
22.07.2017
09:55:54
зависит от того, по чему группируешь. если по парент фильтру, то вернет три, т.к. товара три
тогда надо будет считать товары, а не фильтры

Vlad
22.07.2017
09:56:13

Ad.x ??
22.07.2017
09:56:52
по ид товара подсчет будет только фильтров у конкретного товара

Google

Vlad
22.07.2017
09:57:12
по ид товара подсчет будет только фильтров у конкретного товара
"id" => 235
"name" => "Almonds Ground Blanched"
"text" => "<p>massa quis augue luctus tincidunt nulla mollis molestie lorem quisque ut erat curabitur gravida nisi at nibh</p>"
"img" => "http://dummyimage.com/683x459.png/dddddd/000000"
"multi_img" => "[]"
"price" => "33893"
"count" => "65483"
"units" => "657"
"units_type" => "2"
"published" => 1
"company_id" => "281"
"created_at" => "2017-07-18 17:44:04"
"updated_at" => "2017-07-18 17:44:04"
"url" => "almonds_ground_blanched"
"place" => "38"
"catalog_id" => 235
"filter_id" => 2
"parent_type_filter" => "1"

Ad.x ??
22.07.2017
09:57:15
при условии что названия фильтров ты не вытащишь в таблицу

Vlad
22.07.2017
09:57:20
"filter_id" => 2
"parent_type_filter" => "1"
Потому что выбрал 1 группу со всеми чекбоксаими в ней
И все эти чекбоксы принадлежат 1 товару
Но фильтр же должен при выборе есх чекбоксов 1 группы
Отдать все тоары у которых хоть 1 параетр а не все вместе

Ad.x ??
22.07.2017
09:59:20

Vlad
22.07.2017
10:00:08

Ad.x ??
22.07.2017
10:00:12
SELECT products.*, COUNT(filters.parent_filter)
короче, таблица фильтров не должна создавать дубликаты таблицы продуктов

Vlad
22.07.2017
10:02:00

Ad.x ??
22.07.2017
10:02:44
я не в курсе че у тебя там ) откуда мне знать что возвращает или может вернуть.

Vlad
22.07.2017
10:03:20

Ad.x ??
22.07.2017
10:03:46
возможно иды фильтров задают уникальность списку фильтров
SELECT products.*, COUNT(DISTINCT filters.parent_filter)
выбрать только уникальные значения типов фильтров

Vlad
22.07.2017
10:04:21
3 таблицы продукты прод_фильтры фильтры
далее

Google

Vlad
22.07.2017
10:04:41
я их джойню
далее
->whereIn('catalog_filters.filter_id',$request->filters)
->whereIn('filters.parent_type_filter',$typeFilter)
я осталяю записи у которых фильтры совподают с любым выбранным
и группы совпадают с выбранными
Мне вот просто интересно, ед вариант что я находил еще в интернете, написать генератор sql строки запроса
с кучей join если будет много групп на выбрано...
Например все зеленые

Ad.x ??
22.07.2017
10:09:17
нет, ты выберешь уникальные фильтры для конкретного товара

Admin
ERROR: S client not available

Ad.x ??
22.07.2017
10:10:32
ты походу не понимаешь как мускул выбирает ))

Vlad
22.07.2017
10:11:27
грцппировки нет ещ как и хевинг
На данный момент я оставил только джоны с фильтрами и whereIn
никаких компаний ничего лишнего

Ad.x ??
22.07.2017
10:12:47
все верно, тебе же нужно выбрать товары по количеству фильтров, а не сами фильтры

Vlad
22.07.2017
10:13:51
три разных товара

Ad.x ??
22.07.2017
10:14:53
а че в селекте?

Google

Ad.x ??
22.07.2017
10:16:05
не может быть чтобы каунт самостоятельно сгруппировал разные товары )
вот прям ну совсем

Vlad
22.07.2017
10:16:38

Ad.x ??
22.07.2017
10:17:30
ничего он не откидывает. он считает уникальные типы фильтров
не больше и не меньше

Vlad
22.07.2017
10:17:40
select products.*, parent_type_filter, filters.id as id_filter 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) and filters.parent_type_filter in (1)order by products.name asc

Ad.x ??
22.07.2017
10:17:41
давай запрос
ахахахаха

Vlad
22.07.2017
10:18:27

Ad.x ??
22.07.2017
10:19:23
запросто не тот что мы обсуждаем. ну пиздец короче

Vlad
22.07.2017
10:20:01
и плейс я заметил что потерял
гроуп и хейвинг убрал когда каунт сатл черти что от черти что делать...

Ad.x ??
22.07.2017
10:20:48
и как оно считать будет, если групп отсутствует?


Vlad
22.07.2017
10:21:04
select products.*, COUNT(DISTINCT filters.parent_type_filter), filters.id as id_filter 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) and filters.parent_type_filter in (1) and x = x group by products.id having count(filters.parent_type_filter)=1 order by products.name asc
3 товара теперь с каунт
x=x ->where('x','x') это я в лере дописываю чтобы запрос положить и его выкинуло
так что считайте что его нет
select products.*, COUNT(DISTINCT filters.parent_type_filter) as count, filters.id as id_filter 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) and filters.parent_type_filter in (1) and x = x group by products.id having count(count)=1 order by products.name asc
Напомните для чего в селект мы вводил count (? )