powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Обьединить 15 запросов в один
11 сообщений из 11, страница 1 из 1
Обьединить 15 запросов в один
    #38319855
mstdmstd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет,
Есть таблица inventory_item в которых есть 15 булевых полей цветов udf_it_swc_black, udf_it_swc_gray, udf_it_swc_white...

надо посчитать количество цветов с пометкой 1
Я делал 15 запросов вида:
Код: sql
1.
2.
3.
4.
SELECT count(udf_it_swc_black) AS colors_count, 'udf_it_swc_black' AS color FROM `inventory_item` WHERE inventory_item.UDF_IT_SWC_BLACK=1
SELECT count(udf_it_swc_gray) AS colors_count, 'udf_it_swc_gray' AS color FROM `inventory_item` WHERE inventory_item.UDF_IT_SWC_GRAY=1
SELECT count(udf_it_swc_white) AS colors_count, 'udf_it_swc_white' AS color FROM `inventory_item` WHERE inventory_item.UDF_IT_SWC_WHITE=1
...


Потом их обьединял на клиенте - все бы хорошо но медленно
Но можно ли сделать один запрос посчитать данные 15 запросов выше ?
MySql 5.1.67.
...
Рейтинг: 0 / 0
Обьединить 15 запросов в один
    #38319875
можно.
...
Рейтинг: 0 / 0
Обьединить 15 запросов в один
    #38320066
mstdmstd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так подскажите пожалуйста как
...
Рейтинг: 0 / 0
Обьединить 15 запросов в один
    #38320069
mstdmstd, при помощи групповой функции "SUM" и арифметической операции "+" (сложение).

Более подробный ответ могу дать только при более подробном вопросе - с юзабильным примером тестовых данных и желаемым результатом на них...
...
Рейтинг: 0 / 0
Обьединить 15 запросов в один
    #38320078
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mstdmstd,

SUM(1) , где цвет1=1 или цвет2=1 или... и так 15 раз, сгруппируй по общему критерию (для кого надо считать). Нет?
...
Рейтинг: 0 / 0
Обьединить 15 запросов в один
    #38320097
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mstdmstdЕсть таблица inventory_item в которых есть 15 булевых полей цветов udf_it_swc_black, udf_it_swc_gray, udf_it_swc_white...
А почему не одно поле типа BIT(15)?

mstdmstdможно ли сделать один запрос посчитать данные 15 запросов выше ?
Если получить вот именно так - 15 записей - без геморроя никак, UNPIVOT не поддерживается.
А если устроят 15 полей в одной записи - как два пальца:
Код: sql
1.
2.
3.
4.
select sum(UDF_IT_SWC_BLACK=1) UDF_IT_SWC_BLACK,
       sum(UDF_IT_SWC_WHITE=1) UDF_IT_SWC_WHITE,
...
FROM   inventory_item
...
Рейтинг: 0 / 0
Обьединить 15 запросов в один
    #38320187
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
select sum(UDF_IT_SWC_BLACK) UDF_IT_SWC_BLACK,
       sum(UDF_IT_SWC_WHITE) UDF_IT_SWC_WHITE,
...
FROM   inventory_item

, там же всё равно только 0 и 1
...
Рейтинг: 0 / 0
Обьединить 15 запросов в один
    #38320194
Akina, tanglir,
осталось только убрать алиасы на результирующие колонки и проставить между ними плюсики. Потому как, я понял так, что автору нужно одно число, а не 15.
...
Рейтинг: 0 / 0
Обьединить 15 запросов в один
    #38320316
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirтам же всё равно только 0 и 1
Фиг знает, что имел в виду ТС, когда сказал
mstdmstd15 булевых полей
...
Рейтинг: 0 / 0
Обьединить 15 запросов в один
    #38326263
mstdmstd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем у меня получился вот такой запрос
Код: sql
1.
2.
3.
SELECT DISTINCT  count( udf_it_swc_beige ) AS colors_count_beige, count( udf_it_swc_black ) AS colors_count_black, count( udf_it_swc_blue ) AS colors_count_blue 
FROM `inventory_item` WHERE ((inventory_item.UDF_IT_SWC_BEIGE=1 OR inventory_item.UDF_IT_SWC_BLACK=1) OR inventory_item.UDF_IT_SWC_BLUE=1) AND inventory_item.BRAND_ID IN ('21') 
GROUP BY inventory_item.UDF_IT_SWC_BEIGE,inventory_item.UDF_IT_SWC_BLACK,inventory_item.UDF_IT_SWC_BLUE


Хотя на самом деле там 15 полей - я оставил 3 поля для отладки
И результирующие данные получились
Код: html
1.
2.
3.
4.
colors_count_beige    udf_it_swc_black     udf_it_swc_blue
286                                   286                        286
155                                  155                        155
83                                  83                         83


Цифры в выходных данных верные, но почему для каждой цифры одна строка в выходных данных?
Мне нужна одна строка с 3(в данном случае) колонками.

Как можно сделать одну строка с 3 колонками? Надеюсь я понятно описал чего хочу...
...
Рейтинг: 0 / 0
Обьединить 15 запросов в один
    #38332067
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mstdmstd,

описал не понятно!

тебе надо то что?

сколько записей имеет лишь одну метку цвета?
select count(*)
from table t
where 1 = t.c1+t.c2+...+t.c15
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Обьединить 15 запросов в один
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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