2015-09-25 6 views
0

Я не знаю, возможно ли с помощью одного запроса.Php, MySql query, two COUNT one GROUP BY

Вот мой стол:

id name  body 
------------------------------ 
1 Toyota  SUV 
2 Mazda  Sedan 
3 Crysler  Wagon 
4 Mercedes Van 
5 Merceds  SUV 
6 Mazda  SUV 

etc... 

и вот запрос:

SELECT 
    name, 
    COUNT(name) AS make_total, 
    COUNT(body) AS body_total 
FROM 
    cars 
GROUP BY name; 

Если группа I по имени "make_total" является правильной, если группа I тела, чем "body_total" кол правильно, но никогда не оба.

Ожидаемый результат должен давать правильное количество для каждого поля имени и тела.

+0

Что именно вы пытаетесь достичь? Этот запрос работает так, как ожидалось, если вы не хотите считать «отличные» значения, в этом случае см. Http://www.w3schools.com/sql/sql_func_count.asp – CollinD

ответ

0

Использование COUNT(DISTINCT colname)

SELECT COUNT(DISTINCT name) AS make_total, 
     COUNT(DISTINCT body) AS body_total 
FROM cars 
+0

Спасибо за ваш ответ, но он не дает ожидаемого результат. В вашем примере я получаю только одну строку и правильные счетчики, но мне нужно получить все результаты из столбца имени, сгруппированного по имени – Alko

+0

. Что вы ожидаете в столбце 'body_total', если вы группируете по имени? Не могли бы вы добавить ожидаемые результаты на свой вопрос, чтобы мы поняли, чего вы хотите? – Barmar

+0

Извините. Я просто подтвердил, что это невозможно сделать с помощью одного запроса. Я пошел по другому пути. Спасибо за ваше время – Alko