|
MySQL.RU - Webboard
Вернуться
РЕБЯТА, ПОМОГИТЕ!!! (Иван) 09/03/2006 - 15:01:33
Re: РЕБЯТА, ПОМОГИТЕ!!! (Dinky) 09/03/2006 - 18:33:31
Re: РЕБЯТА, ПОМОГИТЕ!!! (Иван) 10/03/2006 - 00:36:57
Re: РЕБЯТА, ПОМОГИТЕ!!! (Dinky) 10/03/2006 - 01:21:04
Re: РЕБЯТА, ПОМОГИТЕ!!! (Dinky) 10/03/2006 - 01:22:04
Re: РЕБЯТА, ПОМОГИТЕ!!! (Иван) 10/03/2006 - 15:04:18
From: Иван - 09/03/2006 - 15:01:33
Subject:РЕБЯТА, ПОМОГИТЕ!!!
-----------------
Хочу разобраться сейчас с одной задачкой, распишу все по подробнее. Кто хорошо во всем разбирается сразу смотрите главное внизу.
Таблицы:
mp3
singers
top
downloads
Задача не сложная - сделать выборку, найти в top максимальное место, в downloads количество скачиваний, взять и singers имя исполнителя.
mp3.* - вся инфа по песне
s.name as singer_name - исполнитель песни
MAX(top.pos) - максимальная позиция песни
COUNT(d.id) - находим кол-во загрузок
Все данные надо получать вместе одним запросом для возможность сортировки по полям.
SELECT mp3.*, s.name as name, MAX(top.pos) as max, COUNT(d.id) as rs FROM mp3 LEFT JOIN singers s ON s.id=mp3.singer_id LEFT JOIN top ON top.track_id=mp3.id LEFT JOIN downloads d ON d.track_id=mp3.id GROUP BY mp3.id LIMIT 0, 30
Теперь сама проблема - соединение таблиц, делаю все через LEFT JOIN (в первой можно и INNER JOIN использовать т.к. любая песня должна иметь исполнителя, а вот остальные могут и не иметь записей, итак самое главное FROM )
mp3 LEFT JOIN singers s ON s.id=mp3.singer_id (соединяем mp3 с singers)
LEFT JOIN top ON top.track_id=mp3.id (соединяем mp3 с top)
LEFT JOIN downloads d ON d.track_id=mp3.id (соединяем mp3 с downloads )
Проблема в том, что explain показывает что из mp3 идет выборка всех записей и сопоставление, что создает большую нагрузку, наличие LIMIT ничего не меняет. Решене проблемы думаю простое, и все из-за отсутствия знания основ, надо один раз и на всегда разобраться. Прошу на мануалы ссылки не давать, вчера читал сам не и разобрался.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
26891
|
|