@phpgeeks

Страница 5275 из 8430
Ad.x ??
22.07.2017
09:35:03
логика у тебя не правильная

смотри

ты выбираешь продукты, как основную таблицу, и джойнишь к ней допустим компании

не знаю как там у тебя устроено, просто предполагаю

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

просто пример, абстрактный.

вот. ты выбираешь эти две таблицы

1 | носки черные | рога 1 | носки черные | копыта

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
и попробуй это руками сгруппировать. поймешь сразу почему не получается
если 3 товара с 1-м общим parent_type_filter...то count(parent_type_filter) в havinge вернет как понимаю 3 а не 1...

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

тогда надо будет считать товары, а не фильтры

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"

при условии что названия фильтров ты не вытащишь в таблицу
есть 3 записи с разными "filter_id" => 2 но единым "parent_type_filter" => "1"

Потому что выбрал 1 группу со всеми чекбоксаими в ней

И все эти чекбоксы принадлежат 1 товару

Но фильтр же должен при выборе есх чекбоксов 1 группы

Отдать все тоары у которых хоть 1 параетр а не все вместе

Vlad
22.07.2017
10:00:08
Ad.x ??
22.07.2017
10:00:12
SELECT products.*, COUNT(filters.parent_filter)

короче, таблица фильтров не должна создавать дубликаты таблицы продуктов

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

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 если будет много групп на выбрано...

SELECT products.*, COUNT(DISTINCT filters.parent_filter)
COUNT(DISTINCT filters.parent_type_filter) тем самым мы убьем все товары с одинаковым фильтром/парметром

Например все зеленые

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
все верно, тебе же нужно выбрать товары по количеству фильтров, а не сами фильтры
у меня 3 записи товара, а после коунт 1 товар, ghb 'njv 3 hfpys[ njdfhf ,skj

три разных товара

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

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

вот прям ну совсем

Vlad
22.07.2017
10:16:38
а че в селекте?
1 фильтр из 1 группы выбран

не может быть чтобы каунт самостоятельно сгруппировал разные товары )
а он и не группирует, он откидывает товары у которых одинаковые перент фильтр

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 (? )

Страница 5275 из 8430