составной запрос - ошибка

Mishin Oleg

Новичок
LEFT JOIN запрос - помогите!

Задача: из базы вытащить бренды телефонов, посчитав прежде телефоны в брендах - сколько из них поддерживают стандарт GSM, а сколько - CDMA.

Нарисовал запрос
PHP:
SELECT 
 catalog_brand.sid, 
 catalog_brand.title, 
 catalog_brand.img, 
 count( gsm_item.id )  AS gsm,
 count( cdma_item.id )  AS cdma
FROM 
 catalog_brand
LEFT  JOIN 
 catalog_item gsm_item 
ON 
 gsm_item.brand = catalog_brand.sid AND
 gsm_item.par_002 = "GSM" AND
 gsm_item.type =  "phone"
LEFT  JOIN 
 catalog_item cdma_item 
ON
 cdma_item.brand = catalog_brand.sid AND
 cdma_item.par_002 = "CDMA" AND
 cdma_item.type =  "phone"
GROUP BY 
 catalog_brand.sid
В результате выдаются неправильные цифры GSM и CDMA моделей, в чем ошибка? Сразу оговорюсь - только учусь использовать LEFT JOIN, поэтому ногами не пинать =)
Заранее спасибо.
 

Bitterman

Новичок
Попробуй выполнить этот запрос без COUNT и посмотри откуда у тебя берутся лишние элементы (или их не хватает).
 

Mishin Oleg

Новичок
Bitterman
ага, вот что значит пятница =)

Да, и ошибка проявилась - он выдает результаты, и в каждой новой строке выдает GSM выдает возростающее число, типа :
...127, 128,177, NULL, 181, 185... - ошибка в запросе есть, только не могу понять в чем. Возростает не соразмерно количеству телефонов.
 

Bitterman

Новичок
По-моему это у тебя все-таки запрос с count. А ты попробуй без них. Тогда найдешь лишние строчки, будет проще понять в чем дело.
 

chira

Новичок
а если так:
Код:
...
count(DISTINCT gsm_item.id )  AS gsm,
 count(DISTINCT cdma_item.id )  AS cdma 
...
 

Mishin Oleg

Новичок
Bitterman
Это уже без count


chira
О! помогло, спасибо.
Сначала не заметил - забыл про свою систему кеширования, и смотрел на старую страничку, а как кеш очистил - с DISTINCT все прошло. Сенкс!
 
Сверху