SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 05.11.2009 17:57:06

aquality
Участник
Зарегистрирован: 05.11.2009
Сообщений: 4

Помогите до делать "Облако тегов"

Есть 3 таблицы
1. tags: id name
2. wallpapers: id path resolution(это разрешение картинки)
3. tags_wallpapers: id_tag id_wallpaper

Вот этот запрос выводит таблицу тегов и количество их:

SELECT tags.id, tags.name, COUNT(tags_wallpapers.id_tag) AS wallpapers_count FROM tags_wallpapers LEFT JOIN tags ON tags_wallpapers.id_tag = tags.id GROUP BY tags.id


Мне нужно чтобы выводило не все теги, а только те которые есть в изображениях с нужным разрешением, типо
WHERE wallpapers.resolution = '1600x1200'

Как это сделать ума не приложу.

Отредактированно aquality (05.11.2009 17:57:23)

Неактивен

 

#2 05.11.2009 18:16:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите до делать "Облако тегов"

А чем тупое JOIN wallpapers WHERE wallpapers.resolution = '1600x1200' не угодило?

Неактивен

 

#3 05.11.2009 22:58:25

aquality
Участник
Зарегистрирован: 05.11.2009
Сообщений: 4

Re: Помогите до делать "Облако тегов"

Так не работает

Неактивен

 

#4 05.11.2009 23:02:15

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите до делать "Облако тегов"

Что значит «не работает»? Какой запрос? Какая ошибка?

Неактивен

 

#5 05.11.2009 23:14:21

aquality
Участник
Зарегистрирован: 05.11.2009
Сообщений: 4

Re: Помогите до делать "Облако тегов"

Не работает:

SELECT tags.id, tags.name, COUNT(tags_wallpapers.id_tag) AS wallpapers_count FROM tags_wallpapers LEFT JOIN tags ON tags_wallpapers.id_tag = tags.id GROUP BY tags.id JOIN wallpapers WHERE wallpapers.resolution = '1600x1200'


Выводит неправельные данные:
SELECT tags.id, tags.name, COUNT(tags_wallpapers.id_tag) AS wallpapers_count FROM tags_wallpapers LEFT JOIN tags ON tags_wallpapers.id_tag = tags.id JOIN wallpapers WHERE wallpapers.resolution = '1600x1200' GROUP BY tags.id

Неактивен

 

#6 05.11.2009 23:52:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите до делать "Облако тегов"

Эээ... копировать код надо осмысленно smile Я ж не знаю, какие у Вас названия полей smile
JOIN wallpapers ON wallpapers.id = tags_wallpapers.id_wallpaper

К слову сказать, если будут проблемы дальше, не стесняйтесь выкладывать текст ошибки,
«не работает» — не текст ошибки smile

Неактивен

 

#7 06.11.2009 00:03:22

aquality
Участник
Зарегистрирован: 05.11.2009
Сообщений: 4

Re: Помогите до делать "Облако тегов"

Спасибо большое

SELECT tags.id, tags.name, COUNT( tags_wallpapers.id_tag ) AS wallpapers_count
FROM tags_wallpapers
LEFT JOIN tags ON tags_wallpapers.id_tag = tags.id
JOIN wallpapers ON wallpapers.id = tags_wallpapers.id_wallpaper
WHERE wallpapers.resolution = '1600x1200'
GROUP BY tags.id

Работает!

Отредактированно aquality (06.11.2009 00:03:42)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson