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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Группировка по условию возможно ли?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
3d_killer
Отправлено: 05 Мая, 2016 - 21:36:11
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




Не могу найти возможна ли группировка по условию
типо GROUP BY что-то WHEN поле такое!=какой-то величине

(Отредактировано автором: 05 Мая, 2016 - 21:45:29)

 
My status
 Top
Viper
Отправлено: 05 Мая, 2016 - 21:48:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




3d_killer а местами переставить GROUP BY и WHEN ? Улыбка


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
3d_killer
Отправлено: 05 Мая, 2016 - 21:50:27
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




ругаецо, синтаксис не верный, а найти в инете такого примера не могу, если не затруднит то напишите
(Добавление)
Вроде должно быть так
CODE (SQL):
скопировать код в буфер обмена
  1. CASE WHEN rs_catalog_product.parent!=0 THEN GROUP BY rs_catalog_product.parent END

но не работает ошибку пишет
 
My status
 Top
OrmaJever
Отправлено: 05 Мая, 2016 - 22:40:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




я думаю это лучше сделать через 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

(Отредактировано автором: 05 Мая, 2016 - 22:40:38)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
3d_killer
Отправлено: 05 Мая, 2016 - 23:37:41
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




Может я не в ту сторону мыслю,
у меня есть таблица с товарами если parent=0 то это единичный товар без разновидностей, если parent!=0 то это разновидность товара
У товара и у разновидности могут быть свойства по этим свойствам я делаю выборку товаров на страницу например 20 штук, если это разновидность то мне нужно получить именно товар если хоть одна разновидность подходит под выборку.
то есть если 10 разновидностей одного товара подходят под выборку то я должен получить товар, ну если товар подходит под выборку я так же должен получить его итого 20 штук.
с UNION возникает проблема в выбором количества всего товаров в первом запросе
 
My status
 Top
3d_killer
Отправлено: 06 Мая, 2016 - 10:02:57
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




В принципе работает оставлю пока так


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
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB