powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / выборка товаров по сериям....
3 сообщений из 3, страница 1 из 1
выборка товаров по сериям....
    #39179601
anton-marketing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть 2 таблицы


filtr_table - таблица
productIDPriceskidkaoptionIDvariantIDseria_productIDoption_value18883119500110178230018883119500200178260018883119500570178291888311950062117820188831195006321782018883119500644317820188831195006544178201888311950066136178201888311950067517820188831195006761782018883119500677178201888311950068191782018883119500694517820188831195007046178201888311950071111782018883119500721217820188831195007313178201888311950075144178201888311950076169178201888311950077181178201888311950078150178201888311950099930178201888311950010093517820

shop_products - таблица
productIDcategoryIDname18880439Люстра на штанге Versailles A9500PL-5CC18881439Люстра на штанге Versailles A8542LM-6GO18882439Люстра на штанге Jersey A8543PL-5GO18883439Люстра на штанге Cloud A8170PL-9AB


задача
1. выбрали товар люстра (variantID = 43) и характеристику его 12 лампочек (variantID = 136)
2. определяем серии (seria_productID) где есть такой товар
3. проверяем есть ли в этой серии ещё бра и торшер (variantID in (3,41)), групируем по сериям, и делаем первые 20 серий (постраничная навигация)
4. добавляем к этим сериям все товары, и делаем сортировку где в начале выводим люстры (variantID = 43)
---
запрос получился очень тормозной................
кто-то знает как оптимизировать ?


1. определяем серии, товара какой ищем

Код: plsql
1.
SELECT DISTINCT seria_productID from filtr_table WHERE variantID in (136,43) and seria_productID!=0 GROUP BY productID HAVING count(productID)>=2



2. добавляем, - определяем, есть ли в этой серии ещё товары с variantID in (3,41), групируем по сериям, показывать первые 20 серий

Код: sql
1.
SELECT b.seria_productID from(SELECT DISTINCT seria_productID from filtr_table WHERE variantID in (136,43) and seria_productID!=0 GROUP BY productID HAVING count(productID)>=2) as a LEFT JOIN filtr_table AS b on (a.seria_productID=b.seria_productID) where b.variantID in (3,41) GROUP BY b.seria_productID HAVING count(DISTINCT b.variantID)>=2 order by b.seria_productID asc limit 20



3. добавляем , - пказать все товары по этим сериям, добавить выбранным товарам их описание, сортируем, в начале показывать основной товар с пункта 1

Код: sql
1.
SELECT DISTINCT d.* from(SELECT b.seria_productID from(SELECT DISTINCT seria_productID from filtr_table WHERE variantID in (136,43) and seria_productID!=0 GROUP BY productID HAVING count(productID)>=2) as a LEFT JOIN filtr_table AS b on (a.seria_productID=b.seria_productID) where b.variantID in (3,41) GROUP BY b.seria_productID HAVING count(DISTINCT b.variantID)>=2 order by b.seria_productID asc limit 20) as a2 LEFT JOIN filtr_table AS b2 on (a2.seria_productID=b2.seria_productID) LEFT JOIN shop_products AS d on (b2.productID=d.productID) order by b2.seria_productID asc, FIELD (b2.variantID, 43,3,41) desc
...
Рейтинг: 0 / 0
выборка товаров по сериям....
    #39179853
anton-marketing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну да, я понял это сложный вопрос и долго разбираться
надо самому разбираться
...
Рейтинг: 0 / 0
выборка товаров по сериям....
    #39182455
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anton-marketingесть 2 таблицы

filtr_table - таблица
productIDPriceskidkaoptionIDvariantIDseria_productIDoption_value

shop_products - таблица
productIDcategoryIDname


задача
1. выбрали товар люстра (variantID = 43) и характеристику его 12 лампочек (variantID = 136)
2. определяем серии (seria_productID) где есть такой товар
3. проверяем есть ли в этой серии ещё бра и торшер (variantID in (3,41)), групируем по сериям, и делаем первые 20 серий (постраничная навигация)
4. добавляем к этим сериям все товары, и делаем сортировку где в начале выводим люстры (variantID = 43)
---

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select a.seria_productID
from filtr_table a -- 1.1. выбрали товар 
join filtr_table b on b.productID=a.productID -- 1.3. и характеристику его 
  and b.variantID = 136 -- 1.4. 12 лампочек  (variantID = 136)
  and b.seria_productID=a.seria_productID -- 2. определяем серии (seria_productID) где есть такой товар
join filtr_table c on c.seria_productID=a.seria_productID -- 3.1. проверяем есть ли в этой серии ещё 
  and c.variantID=3 -- 3.2. бра 
join filtr_table d on d.seria_productID=a.seria_productID 
  and d.variantID=41 -- 3.3. и торшер (variantID in (3,41)
where a.variantID = 43 -- 1.2. люстра (variantID = 43)
-- 3.4.  групируем по сериям, и делаем первые 20 серий
group by a.seria_productID 
limit 20


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
-- 4. добавляем к этим сериям все товары
select p.*
from(
  select a.seria_productID
  from filtr_table a -- 1.1. выбрали товар 
  join filtr_table b on b.productID=a.productID -- 1.3. и характеристику его 
    and b.variantID = 136 -- 1.4. 12 лампочек  (variantID = 136)
    and b.seria_productID=a.seria_productID -- 2. определяем серии (seria_productID) где есть такой товар
  join filtr_table c on c.seria_productID=a.seria_productID -- 3.1. проверяем есть ли в этой серии ещё 
    and c.variantID=3 -- 3.2. бра 
  join filtr_table d on d.seria_productID=a.seria_productID 
    and d.variantID=41 -- 3.3. и торшер (variantID in (3,41)
  where a.variantID = 43 -- 1.2. люстра (variantID = 43)
  -- 3.4.  групируем по сериям, и делаем первые 20 серий
  group by a.seria_productID 
  limit 20
  )s
join filtr_table t on t.seria_productID=g.seria_productID
join shop_products p on p.productID=t.productID
-- 4. и делаем сортировку где в начале выводим люстры (variantID = 43)
group by p.productID,(t.variantID<>43)
order by (t.variantID<>43)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / выборка товаров по сериям....
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]