Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
26891



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |