Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Приглашаю для постоянного удаленного сотрудничества опытного PHP-программиста, которому по душе идея yaliti.com

Кто хочет, может решить следующую задачку.

Имеется некая функция «Какой трек играть?».

В общем она выглядит вот так, как описано ниже.

А как бы вы её написали, как бы использовали индексы, изменили бы что-то?

1. Проверяем, есть ли в принципе хотя бы одна песня, удовлетворяющая настройкам.

$id =

SELECT s.id FROM songs s

LEFT JOIN songs_filters sf ON sf.song_id = s.id

WHERE

sf.filter_id = 1607 // Трек в эфире

AND

sf.song_id NOT IN (select song_id FROM songs_filters where filter_id = 1606) // Кроме тех, которые на модерации

AND

sf.song_id IN (select song_id FROM songs_filters where filter_id IN ('1, 2, 3, 4')) // И, у которых выбран один и фильтров

AND

sf.song_id IN (select song_id FROM songs_filters where filter_id IN ('669, 670, 671, 673')) // И, у которых выбран один и фильтров

AND

sf.song_id IN (select song_id FROM songs_filters where filter_id IN ('1230, 1231, 1233')) // И, у которых выбран один и фильтров

LIMIT 1

Если поиск не дал результата: «По выбранным фильтрам треков не найдено. Вы можете попробовать изменить настройки радио.»

2. Если есть, то выбираем самую свежу песню, соответствующую настройкам, которую я ни разу еще не слышал.

$id =

SELECT MAX ( s.id ) FROM songs s

LEFT JOIN songs_filters sf ON sf.song_id = s.id

WHERE

sf.filter_id = 1607 // Трек в эфире

AND

sf.song_id NOT IN (select song_id FROM songs_filters where filter_id = 1606) // Кроме тех, которые на модерации

AND

sf.song_id IN (select song_id FROM songs_filters where filter_id IN ('1, 2, 3, 4'))

AND

sf.song_id IN (select song_id FROM songs_filters where filter_id IN ('669, 670, 671, 673'))

AND

sf.song_id IN (select song_id FROM songs_filters where filter_id IN ('1230, 1231, 1233'))

AND

s.id NOT IN (

SELECT song_id

FROM songs_listening_history slh

WHERE slh.user_id = 2

)

LIMIT 1

3. Если таких нет, то выбираем песню, прослушанную мной давнее всего, соответствующую настройкам.

$my_last_listening =

select min(slh.my_last_listening) FROM songs_listening_history slh

LEFT JOIN songs_filters sf ON sf.song_id=slh.song_id

WHERE

slh.user_id=2

AND

slh.my_rating>=0

AND

sf.filter_id = 1607 // Трек в эфире

AND

sf.song_id NOT IN (select song_id FROM songs_filters where filter_id = 1606) // Кроме тех, которые на модерации

AND

sf.song_id IN (select song_id FROM songs_filters where filter_id IN ('1, 2, 3, 4'))

AND

sf.song_id IN (select song_id FROM songs_filters where filter_id IN ('669, 670, 671, 673'))

AND

sf.song_id IN (select song_id FROM songs_filters where filter_id IN ('1230, 1231, 1233'))

LIMIT 1

select slh.song_id, s.user_id, u.folder_id FROM songs_listening_history slh

LEFT JOIN songs s ON s.id = slh.song_id

LEFT JOIN users u ON u.id = slh.user_id

where slh.my_last_listening=$my_last_listening and slh.user_id=2

Если поиск не дал результата: «По выбранным фильтрам треков не найдено. Вы можете попробовать изменить настройки радио.»

Если трек найден, то происходит переадресация на УРЛ вида http://yaliti.com/radio/track/$folder_name/$track_id

12 лет назад
Aladdinps
42 годаУкраина
16 лет в сервисе
Был
9 лет назад
  • Похожие заказы
  • $2500

    Job Description: Поддержка существующей социальной сети. Требования: * опыт разработки приложений на платформе PHP/MySQL * опыт разработки JS/jQuery * опыт использования MVC frameworks Желательные навыки: * опыт работы с высоконагруженными приложениями * опыт работы с NoSQL базами данных * опыт использования автоматизированного тестирования Формат ...

    Закрыт
    12 лет назад
  • $2500

    требуется: JavaScript-разработчик со знанием Java от 2000 USD Обязанности: • выполнение в срок поставленных целей • качественная работа • ответственность Требования: • знание английского (технический/разговорный) •знание ExtJS Условия: • полная занятость • удаленная работа • карьерный рост • работа в команде Опыт: более 1 года График: удаленная работа Тип: полный день

    Закрыт
    12 лет назад
  • $2500

    требуется: Java-разработчик от 2000 USD Обязанности: • выполнение в срок поставленных целей • качественная работа • ответственность Требования: • знание Spring, Spring Data JPA, Spring Integration, ExtJS • приветствуются знания BPM (в идеале Activiti) и Rule Engine (в идеале Drools) • знание английского ...

    Закрыт
    12 лет назад
  • $2500

    Нужны 3 программиста php для постоянной удаленной работы Работодатель: хостинговая компания www.2by2host.com (США) Предполагаемая занятость: 8 часов в день, 5 дней в неделю З/п: 1000–1500 долл/мес по результатам собеседования О работе: * правка open source и самописных движков сайтов; * создание ...

    Закрыт
    12 лет назад
  • $1000

    Веб-программист с навыками разработки сайтов на PHP, MySQL, JavaScript требуется в компанию «Инпроект» (Тверь). Приветствуются аккуратность, любознательность, эрудированность. Желание развиваться в профессиональном плане и разрабатывать отличные сайты обязательно. Зарплата от 20 000 до 30 ...

    Закрыт
    12 лет назад
  • Требования: - HTML/CSS/JS - верстать не нужно, но иногда придется что-то пофиксить, или дописать; - PHP/MySQL - обязательно; - Smarty. Основные задачи: - Разработка приложений на основе существующей CMS, сложность задач бывает разная - от сайтов визиток, до больших проектов ...

    Закрыт
    12 лет назад
  • $2500

    Не по наслышке знаешь о PHP? Голыми руками обращаешься с MySQL/noSQL? GIT/SSH/HTML/CSS/JS для тебя не пустой звук? Варишься в этой каше больше года? Стараешься двигаться вперед не используя костыли? Ты такой няша, и мы уже хотим с тобой познакомиться! Напиши нам ...

    Закрыт
    12 лет назад
  • $2500

    Маленькой и веселой it-компании, требуется Ruby Developer. С нас: дружный коллектив, возможность решать интересные задачи, достойная оплата. От тебя: амбиции, желание работать и развиваться. Считаешь что у тебя мало опыта? Все равно напиши нам по адресу openoleg[at]myhotspot.ru и ...

    Закрыт
    12 лет назад
  • $2500

    В перспективную команду разработчиков для внесения гармонии приглашается Scala Developer. Если ты безумно влюблен в Scala. Если тебе нравится решать сложные и интересные задачи. Если ты стремишься к просетлению и желаешь вырасти профессионально. Если ты не боишься. Если ты кажется ...

    Закрыт
    12 лет назад