2010-06-24 2 views
0

У меня есть таблица продуктов, которая содержит около 2000 продуктов для одежды, каждый товар имеет поле grpIdent и поле productGroup.Получите количество строк в группе select ... по инструкции mysql

, когда я выполнить следующий запрос:

select count(1) 
from tblclothingitems ci 
where productGroup='hel' 
group by productGroup, grpIdent 

Я получаю 99 результирующий набор строк, в соответствии с SQL Yog, содержащий различные значения, относящихся к количеству строк для каждой группы. НО я хочу вернуть номер 99, указав количество возвращенных строк.

Есть ли у кого-нибудь идеи о том, как я могу это достичь, пожалуйста?

+1

Я не совсем уверен, что вы просите здесь. Можете ли вы перефразировать свой вопрос? –

+0

Просьба привести пример того, что вы хотели бы получить от запроса. –

ответ

0

Если вы хотите получить одно значение, вам нужно выбрать переменную.
Как это:

DECLARE @Count INT; 
select @Count = count(1) from tblclothingitems ci where productGroup='hel' group by productGroup, grpIdent 
RETURN @Count 

EDIT:
Кажется, я получил ваш вопрос неправильно. Если я правильно понимаю сейчас, вы можете использовать: SELECT COUNT (DISTINCT) FROM Группа продуктов tblclothingitems

2
SELECT COUNT(*) FROM ([Your Query]) 

возвращает количество строк из вашего возвращения запроса.

+0

Это работает удовольствие, хотя я только что попробовал этот запрос, который делает точно то же самое: ВЫБРАТЬ \t COUNT (DISTINCT (grpIdent)) ИЗ tblclothingItems ХИ ( \t ВЫБРАТЬ \t \t COUNT (DISTINCT (grpIdent)) \t ОТ \t \t tblclothingitems сл \t ГДЕ \t \t = Группа продуктов 'HEL' И liveToSite = 'у' \t GROUP BY \t \t произво ctGroup, grpIdent \t \t) p WHERE \t продуктGroup = 'hel' AND liveToSite = 'y'; Так что спасибо. – EvilKermitSaurus

0

Используйте встроенную функцию MySQL «SQL_CALC_FOUND_ROWS», которая работает следующим образом, используя ваш пример выше;

 
select SQL_CALC_FOUND_ROWS count(1) 
from tblclothingitems ci 
where productGroup='hel' 
group by productGroup, grpIdent 

Затем введите вторую команду MySQL;

 
SELECT FOUND_ROWS(); 

И использовать этот результат в пределах вашего программного обеспечения - вы можете использовать это во многих областях, например, обновление данных, или когда вы используете «LIMIT» положение, чтобы ограничить количество строк, возвращаемых в приложение.

SQL_CALC_FOUND_ROWS сообщает MySQL, чтобы вычислить количество строк , игнорируя предложение LIMIT, которое позволяет вам что-то делать.

 
SELECT SQL_CALC_FOUND_ROWS * 
FROM `myTable` 
WHERE `title` LIKE "%blah%" 
LIMIT 100,10; 

Чтобы извлечь 10 рядов, начиная со 100-й строки, а затем;

 
SELECT FOUND_ROWS(); 

который расскажет вам, сколько строк Есть с «бэ» в title поле во всей таблице, вы можете представить эту информацию как «Показ 10 строк из 12345 тотальных»

+0

Я попытался использовать встроенные функции, но поскольку я использую sql в async-приложении AJAX, я хочу только один раз ударить базу данных и вернуть результат строки с результатами. мне удалось найти это решение: ЗЕЬЕСТА \t COUNT (DISTINCT (grpIdent)) ИЗ tblclothingItems Х ( \t ЗЕЬЕСТА \t \t COUNT (DISTINCT (grpIdent)) \t ИЗ \t \t tblclothingitems кл \t ГДЕ \t \t = Группа продуктов 'HEL' И liveToSite = 'у' \t GROUP BY \t \t Группа продуктов, grpIdent \t \t) р ГДЕ \t = Группа продуктов 'HEL' И liveToSite = 'у'; , который использует полученный запрос, чтобы дать мне результаты, которые я ожидаю. – EvilKermitSaurus

+0

Звучит неплохо, но он не дает вам «данных», а делает это так. Мое предложение выше позволяет вытащить данные из базы данных, чтобы вы могли выполнять другие задачи с ним, как создание некоторого вывода, а затем также получать количество строк со вторым оператором SELECT. Второй SELECT фактически не «ударяет» по базе данных, MySQL возвращает это непосредственно из своих внутренних компонентов - вам даже не нужно предоставлять базу данных для ее запуска, просто убедитесь, что соединение с сервером остается открытым до тех пор, пока второй SELECT ... :) –

2
select **@@Rowcount** as myResultRowsCount 
from tblclothingitems ci 
where productGroup='hel' 
group by productGroup, grpIdent 
0
select productGroup, grpIdent, count(*) 
from tblclothingitems ci 
where productGroup='hel' 
group by productGroup, grpIdent; 

вернет счетчики для разных значений grpIdent.

Пункт 1. Вы можете вложить таблицу и выбрать count (*) для подсчета строк.

Пункт 2. Это ниже предпочтительный запрос для мощности значений.

select count (distinct grpIdent) 
from tblclothingitems ci 
where productGroup='hel'; 
Смежные вопросы