Job Description: Поддержка существующей социальной сети. Требования: * опыт разработки приложений на платформе PHP/MySQL * опыт разработки JS/jQuery * опыт использования MVC frameworks Желательные навыки: ...
PHP-программист
Приглашаю для постоянного удаленного сотрудничества опытного 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
Заявки фрилансеров
Похожие заказы
- $2500Веб-программирование1 заявкаЗакрыт13 лет назад
- $2500
требуется: JavaScript-разработчик со знанием Java от 2000 USD Обязанности: • выполнение в срок поставленных целей • качественная работа • ответственность Требования: • знание английского (технический/разговорный) •знание ExtJS ...
Веб-программированиенет заявокЗакрыт13 лет назад - $2500
требуется: Java-разработчик от 2000 USD Обязанности: • выполнение в срок поставленных целей • качественная работа • ответственность Требования: • знание Spring, Spring Data JPA, Spring Integration, ExtJS ...
Веб-программирование2 заявкиЗакрыт13 лет назад - $2500
Нужны 3 программиста php для постоянной удаленной работы Работодатель: хостинговая компания www.2by2host.com (США) Предполагаемая занятость: 8 часов в день, 5 дней в неделю З/п: 1000–1500 долл/мес по результатам собеседования ...
Веб-программирование3 заявкиЗакрыт13 лет назад - $1000
Веб-программист с навыками разработки сайтов на PHP, MySQL, JavaScript требуется в компанию «Инпроект» (Тверь). Приветствуются аккуратность, любознательность, эрудированность. Желание развиваться в профессиональном плане и разрабатывать отличные сайты обязательно. ...
Веб-программирование3 заявкиЗакрыт13 лет назад Требования: - HTML/CSS/JS - верстать не нужно, но иногда придется что-то пофиксить, или дописать; - PHP/MySQL - обязательно; - Smarty. Основные задачи: - Разработка приложений на основе существующей ...
Веб-программирование3 заявкиЗакрыт13 лет назад- $2500
Не по наслышке знаешь о PHP? Голыми руками обращаешься с MySQL/noSQL? GIT/SSH/HTML/CSS/JS для тебя не пустой звук? Варишься в этой каше больше года? Стараешься двигаться вперед не используя костыли? ...
Веб-программирование1 заявкаЗакрыт13 лет назад - $2500
Маленькой и веселой it-компании, требуется Ruby Developer. С нас: дружный коллектив, возможность решать интересные задачи, достойная оплата. От тебя: амбиции, желание работать и развиваться. Считаешь что у тебя ...
Веб-программированиенет заявокЗакрыт13 лет назад - $2500
Требуется веб-программист Java/JavaScript для создания вебприложений для JBoss с использованием Java и ExtJS. Оплата за каждую задачу отдельно и по договоренности.
Веб-программирование3 заявкиЗакрыт13 лет назад - $2500
В перспективную команду разработчиков для внесения гармонии приглашается Scala Developer. Если ты безумно влюблен в Scala. Если тебе нравится решать сложные и интересные задачи. Если ты стремишься к просетлению и ...
Веб-программированиенет заявокЗакрыт13 лет назад