Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Группировка по условию возможно ли?
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Группировка по условию возможно ли?

Страниц (1): [1]
 

1. 3d_killer - 05 Мая, 2016 - 21:36:11 - перейти к сообщению
Не могу найти возможна ли группировка по условию
типо GROUP BY что-то WHEN поле такое!=какой-то величине
2. Viper - 05 Мая, 2016 - 21:48:04 - перейти к сообщению
3d_killer а местами переставить GROUP BY и WHEN ? Улыбка
3. 3d_killer - 05 Мая, 2016 - 21:50:27 - перейти к сообщению
ругаецо, синтаксис не верный, а найти в инете такого примера не могу, если не затруднит то напишите
(Добавление)
Вроде должно быть так
CODE (SQL):
скопировать код в буфер обмена
  1. CASE WHEN rs_catalog_product.parent!=0 THEN GROUP BY rs_catalog_product.parent END

но не работает ошибку пишет
4. OrmaJever - 05 Мая, 2016 - 22:40:16 - перейти к сообщению
я думаю это лучше сделать через union

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT ... FROM ... WHERE rs_catalog_product.parent = 0
  2. UNION
  3. SELECT ... FROM ... WHERE rs_catalog_product.parent != 0 GROUP BY rs_catalog_product.parent
5. 3d_killer - 05 Мая, 2016 - 23:37:41 - перейти к сообщению
Может я не в ту сторону мыслю,
у меня есть таблица с товарами если parent=0 то это единичный товар без разновидностей, если parent!=0 то это разновидность товара
У товара и у разновидности могут быть свойства по этим свойствам я делаю выборку товаров на страницу например 20 штук, если это разновидность то мне нужно получить именно товар если хоть одна разновидность подходит под выборку.
то есть если 10 разновидностей одного товара подходят под выборку то я должен получить товар, ну если товар подходит под выборку я так же должен получить его итого 20 штук.
с UNION возникает проблема в выбором количества всего товаров в первом запросе
6. 3d_killer - 06 Мая, 2016 - 10:02:57 - перейти к сообщению
В принципе работает оставлю пока так


CODE (SQL):
скопировать код в буфер обмена
  1. SELECT rs_catalog_product.*,rs_catalog_product.date_add AS d FROM rs_catalog_product
  2. INNER JOIN rs_catalog_property_values_to_product ON
  3. rs_catalog_property_values_to_product.product_id=rs_catalog_product.id AND rs_catalog_property_values_to_product.link=9
  4. WHERE rs_catalog_product.parent=0
  5.        
  6.        
  7.         UNION
  8.        
  9.        
  10. SELECT temp.*,temp.date_add AS d FROM rs_catalog_product
  11.  LEFT JOIN rs_catalog_product AS temp ON
  12.  rs_catalog_product.parent=temp.id
  13. INNER JOIN rs_catalog_property_values_to_product ON
  14. rs_catalog_property_values_to_product.product_id=rs_catalog_product.id AND rs_catalog_property_values_to_product.link=9
  15.  
  16. WHERE rs_catalog_product.parent!=0 GROUP BY rs_catalog_product.parent
  17. ORDER BY d DESC

(Добавление)
CODE (SQL):
скопировать код в буфер обмена
  1. //Количество
  2. SELECT count(id) AS count
  3. FROM(
  4. SELECT rs_catalog_product.id FROM rs_catalog_product
  5. INNER JOIN rs_catalog_property_values_to_product ON rs_catalog_property_values_to_product.product_id=rs_catalog_product.id AND rs_catalog_property_values_to_product.link=9
  6. WHERE rs_catalog_product.parent=0
  7.  
  8. UNION
  9.  
  10. SELECT temp.id FROM rs_catalog_product
  11. LEFT JOIN rs_catalog_product AS temp ON rs_catalog_product.parent = temp.id
  12. INNER JOIN rs_catalog_property_values_to_product ON rs_catalog_property_values_to_product.product_id=rs_catalog_product.id AND rs_catalog_property_values_to_product.link=9
  13. WHERE rs_catalog_product.parent!=0
  14. GROUP BY rs_catalog_product.parent ) AS d
  15.  
  16.  
  17. //Товары
  18. SELECT rs_catalog_product.* FROM rs_catalog_product
  19. INNER JOIN rs_catalog_property_values_to_product ON rs_catalog_property_values_to_product.product_id=rs_catalog_product.id AND rs_catalog_property_values_to_product.link=9
  20. WHERE rs_catalog_product.parent=0
  21.  
  22. UNION
  23.  
  24. SELECT temp.* FROM rs_catalog_product
  25. LEFT JOIN rs_catalog_product AS temp ON rs_catalog_product.parent = temp.id
  26. INNER JOIN rs_catalog_property_values_to_product ON rs_catalog_property_values_to_product.product_id=rs_catalog_product.id AND rs_catalog_property_values_to_product.link=9
  27. WHERE rs_catalog_product.parent!=0
  28. GROUP BY rs_catalog_product.parent


проверил пока работает быстро товаров всего около 8 тыс и максимум 4 INNER JOIN

 

Powered by ExBB FM 1.0 RC1