@phpgeeks

Страница 5274 из 8430
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
Начал делать цикл видео на тему базы данных https://www.youtube.com/watch?v=Mg0v6ZVOXpE&list=PL7Nh93imVuXyU9yYS6NRZnbuJvS5uzZkT&index=1
Днинаа видео оптимальная для просмотров, контент качественный. Планируете видео, посвященное двунаправленной синхронизации модель-рабочая бд?

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

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
Как в sql оставить "Almonds Ground Blanched" потому что у него 2 фильтра?
where parent_type_filter=2 если это не агрегатное значение

Dan
22.07.2017
08:51:49
where parent_type_filter=2 если это не агрегатное значение
как ты изменил способ форматирования?)

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

Vlad
22.07.2017
08:52:44
никак ) ` такой кавычкой
вроде как то через having можно(

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
вроде как то через having можно(
если это агрегатное значение. т.е. совместно с group by

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 ?

Vlad
22.07.2017
08:58:39
не видно чтобы гдето фигурировало COUNT(parent_type_filter) as parent_type_filter_num // какой нибудь
да как раз думаю, получается having отдает сколько было сжато записей в 1, при этом группировка идет по = значению у записей

Например если у 3 записей id = 7

то мы получим 1 запись

а хевинг вернет 3

Так?

Ad.x ??
22.07.2017
08:59:40
хевинг ничего не веренет ) Он условие

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

это количество

Vlad
22.07.2017
09:00:32
хевинг ничего не веренет ) Он условие
хевинг нужно с count писать чтобы количество сравнивать?

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
наскоко помню да, ознакомься с маном. я могу пиздеть по памяти )
что-то не так( 5 записей. 2 из них с одинаковым именем и id но разными parent_type_filter

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
иды же одинаковые, они и сгруппировались
значит having не в контексте группы работает(

он же не видит что схлопнулось 2

Vlad
22.07.2017
09:10:20
иды же одинаковые, они и сгруппировались
не видно чтобы гдето фигурировало COUNT(parent_type_filter) as parent_type_filter_num // какой нибудь

Проще говоря добится доп поля в который положится число групп фильтров

?

и после группировкми уже having по этому полю

Хотя опять же вопрос, как получить в контексте группы до группировки

просто подставив в селект возвращяет вообще 8

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

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

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
выбирай то что тебе нужно, и явно указывай что выбирать, для начала
спасибо, за потреченное время, думаю в первую очередь нужно дать id элиасы

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

Vlad
22.07.2017
09:21:38
далее, не виден хевинг
having count(parent_type_filter)=2

сейчас он точно есть не понимаю как он прошлый раз потерялся

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

filters.parent_type_filter

Vlad
22.07.2017
09:22:29
parent_type_filter откуда он берется?
Catalog::leftJoin('catalog_filters', 'catalog_filters.catalog_id', 'products.id') ->leftJoin('filters', 'catalog_filters.filter_id', 'filters.id')

Да

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
сам подумай. как он будет группировать, если у тебя там уникальных значений вагон?

не просто вагон, дохуя и больше

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

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

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