
Evgeniy
22.07.2017
07:05:28
Начал делать цикл видео на тему базы данных https://www.youtube.com/watch?v=Mg0v6ZVOXpE&list=PL7Nh93imVuXyU9yYS6NRZnbuJvS5uzZkT&index=1

merk
22.07.2017
07:40:55

Dan
22.07.2017
08:41:48
используем сессии, обычно
Очень прошу помощи на конкретном работающем примере кода. Уже если не месяц ещё, но в течение месяца пытаюсь разобраться с этим вопросом

Ad.x ??
22.07.2017
08:42:20
что там разбираться?

Google

Ad.x ??
22.07.2017
08:42:58
http://phpfaq.ru/sessions

Yaroslav
22.07.2017
08:43:03

Ad.x ??
22.07.2017
08:44:04
фак по сессиям следует воспринимать как ознакомительный материал. Говна там хватает и нужно подходить к этому делу сголовой

Vlad
22.07.2017
08:46:49
"name" => "Almonds Ground Blanched"
"parent_type_filter" => "4"
"name" => "Beef - Rib Roast, Cap On"
"parent_type_filter" => "1"
"name" => "Almonds Ground Blanched"
"parent_type_filter" => "2"
Как в sql оставить "Almonds Ground Blanched" потому что у него 2 фильтра?
Делаю сортировку товаров, осталось оставить товары в выборке, которые принадлежат всем подгруппам фильтрации

Ad.x ??
22.07.2017
08:51:17

Dan
22.07.2017
08:51:49

Vlad
22.07.2017
08:51:59

Ad.x ??
22.07.2017
08:52:10
никак ) ` такой кавычкой

Vlad
22.07.2017
08:52:44

Dan
22.07.2017
08:52:46
привет проверка

Ad.x ??
22.07.2017
08:52:49

Google


Vlad
22.07.2017
08:53:07
что ты хочешь? ванга в отпуске. давай запрос
$arrayProducts = Catalog::leftJoin('catalog_filters', 'catalog_filters.catalog_id', 'products.id')
->leftJoin('filters', 'catalog_filters.filter_id', 'filters.id')
->leftJoin('companies','companies.id','products.company_id')
->leftJoin('company_section','company_section.company_id','companies.id')
->leftJoin('section','section.id','company_section.section_id')
->leftJoin('section as secProd','secProd.id','products.place')
->whereIn('catalog_filters.filter_id',$request->filters)
->whereIn('filters.parent_type_filter',$typeFilter)
->groupBy('filters.parent_type_filter')
//->havingRaw('count(products.id)='.count($typeFilter))
->selectRaw('*,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')
->orderBy('products.name', 'asc')
//->where('x','x')
->groupBy('products.id')->get();


Ad.x ??
22.07.2017
08:53:18

Vlad
22.07.2017
08:53:35
uhjeg gj njve;t gjk.
гроуп по томуже полю

Ad.x ??
22.07.2017
08:54:07
ну и делай HAVING parent_type_filter=2
после GROUP BY

Igor
22.07.2017
08:54:40
всем привет. помогите с запростом laravel
есть модель Product c getFinalPriceAttribute() как сделать запрос типа Product::query()->where(FINALPRICE < 100)->get ?


Ad.x ??
22.07.2017
08:57:13
$arrayProducts = Catalog::leftJoin('catalog_filters', 'catalog_filters.catalog_id', 'products.id')
->leftJoin('filters', 'catalog_filters.filter_id', 'filters.id')
->leftJoin('companies','companies.id','products.company_id')
->leftJoin('company_section','company_section.company_id','companies.id')
->leftJoin('section','section.id','company_section.section_id')
->leftJoin('section as secProd','secProd.id','products.place')
->whereIn('catalog_filters.filter_id',$request->filters)
->whereIn('filters.parent_type_filter',$typeFilter)
->groupBy('filters.parent_type_filter')
//->havingRaw('count(products.id)='.count($typeFilter))
->selectRaw('*,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')
->orderBy('products.name', 'asc')
//->where('x','x')
->groupBy('products.id')->get();
не видно чтобы гдето фигурировало COUNT(parent_type_filter) as parent_type_filter_num // какой нибудь


Vlad
22.07.2017
08:58:39
Например если у 3 записей id = 7
то мы получим 1 запись
а хевинг вернет 3
Так?

Ad.x ??
22.07.2017
08:59:40
хевинг ничего не веренет ) Он условие
чтобы сравнить количество записей, тебе их нужно получить для начала
это количество

Vlad
22.07.2017
09:00:32

Google

Ad.x ??
22.07.2017
09:01:13
не обязательно с каунтом, есть и другие функции, но да.

Vlad
22.07.2017
09:01:23
И еще, having работает в контексте группы?

Ad.x ??
22.07.2017
09:02:01
наскоко помню да, ознакомься с маном. я могу пиздеть по памяти )

Vlad
22.07.2017
09:07:19
having count(parent_type_filter)=2
и я теряю эту запись
->groupBy('products.id')
Группирую по id

Ad.x ??
22.07.2017
09:08:14
все верно
иды же одинаковые, они и сгруппировались

Vlad
22.07.2017
09:08:46
он же не видит что схлопнулось 2

Vlad
22.07.2017
09:10:20
Проще говоря добится доп поля в который положится число групп фильтров
?
и после группировкми уже having по этому полю
Хотя опять же вопрос, как получить в контексте группы до группировки
просто подставив в селект возвращяет вообще 8

Ad.x ??
22.07.2017
09:13:41
и узнал что хавинг работает в контексте группировки

Google

Ad.x ??
22.07.2017
09:14:28
смотри по нормальному запросу, а не по той херне, что ты сейчас делаешь

Vlad
22.07.2017
09:14:51

Ad.x ??
22.07.2017
09:15:05
по чистому sql

Vlad
22.07.2017
09:15:35
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
5 ctr
сек
удалю лишние джойны
по чистому sql
понятно вот и ответ, после удаления дополнительных join все работает как часы

Ad.x ??
22.07.2017
09:18:00
не ответ

Admin
ERROR: S client not available

Ad.x ??
22.07.2017
09:18:11
select *
1 ошибка

Vlad
22.07.2017
09:18:15

Ad.x ??
22.07.2017
09:18:22
это все ломает

Vlad
22.07.2017
09:18:59

Ad.x ??
22.07.2017
09:19:45
выбирай то что тебе нужно, и явно указывай что выбирать, для начала

Vlad
22.07.2017
09:20:03
сейчас попробую вручную перебрать поля , что мне нужны выкинув *, но тут скорее нужно всем id дать алиас

Ad.x ??
22.07.2017
09:20:23
select products.*, companies.*,
типо того, тока не звездочками, а что нужно

Vlad
22.07.2017
09:20:37

Google

Ad.x ??
22.07.2017
09:21:03
далее, не виден хевинг

Vlad
22.07.2017
09:21:38
сейчас он точно есть не понимаю как он прошлый раз потерялся

Ad.x ??
22.07.2017
09:22:03
parent_type_filter откуда он берется?
filters.parent_type_filter

Vlad
22.07.2017
09:22:29
Да

Ad.x ??
22.07.2017
09:22:42
так и указывай
типа:
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
в целом запрос говно. сломается на дефолтном конфиге 5.7 мускула

Vlad
22.07.2017
09:29:29
пока тестирую проблем нет, пока не начинаешь join ить дополнительные таблицы
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
select * тоже не ломает ничего, но потом наверное исправлю

Ad.x ??
22.07.2017
09:31:47
ломает
просто мускул тебе прощает

Vlad
22.07.2017
09:32:09
единственное нужно unique добавить

Ad.x ??
22.07.2017
09:32:21
сам подумай. как он будет группировать, если у тебя там уникальных значений вагон?
не просто вагон, дохуя и больше

Vlad
22.07.2017
09:32:49

Ad.x ??
22.07.2017
09:33:09
с каждой таблицы вылезают все значения в строку, и это формирует уникальность строки

Vlad
22.07.2017
09:34:45