2012-09-08 3 views
0

У меня есть этот пункт:Mysql граф() с группой по дает дублирует

SELECT count(*) FROM imagetags 
INNER JOIN userimages ON imagetags.imageid = userimages.id   
WHERE privacy='public' 
&& (tag='cars' || description LIKE '%cars%' || title LIKE '%cars%')  
GROUP BY imageid 

Я хочу найти все возможные места (теги, описание, название) из двух таблиц (imagetags, userimages) для «автомобилей 'и вернуть количество изображений (по существу, строк), которые их приводят.

Проблема заключается в том, что count возвращает повторяющиеся результаты, если есть успех в двух или нескольких из этих мест. Например. если в теге есть и те же картинки, и счетчик = 2 вместо 1. Это не произойдет, если я сделаю SELECT imageid (...). Мне кажется, что GROUP BY работает не так, как надо, с подсчетами, предложениями?

+1

Что ваши данные таблицы выглядит? –

ответ

1

Использование DISTINCT в запросе:

SELECT COUNT(DISTINCT userimages.id) FROM imagetags 
INNER JOIN userimages ON imagetags.imageid = userimages.id   
WHERE privacy='public' 
&& (tag='cars' || description LIKE '%cars%' || title LIKE '%cars%') 

Documentation for COUNT

+0

Это сделало работу! Большое спасибо! GROUP BY не требуется, поскольку (по какой-то причине) он дает мне строки результатов, с count = 1 для каждого. –

+0

Правильно. Я удалил «GROUP BY». – Jocelyn

0

Вы пробовали использовать SELECT COUNT(imageid) FROM imagetags ...

+0

Он возвращает то же самое ... –

0

Попробуйте это:

SELECT COUNT(userimages.id) ... 
+0

Это дает ошибку mysql при синтаксисе –

+0

Извините, попробуйте новый код. userimages.id –

Смежные вопросы