[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Тестовое задание - помогите выполнить
Страницы: 1, 2, 3, 4, 5, 6, 7
S.Chushkin
Цитата (Oyeme @ 10.01.2013 - 15:49)
Ничего поправлять Нинадо.
Все работает как надо.С самого начала.

Экий Вы упрямый. sad.gif
Вам уже трое сказали, что запрос не рабочий. А Michael даже написал, как поправить надо.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Michael
Valick, а так верно же выдает на твоей базе?:
SELECT * FROM data WHERE (currency, data) IN (
SELECT currency,
MAX(DATE_FORMAT(data,"%Y-%m-%d"))
FROM data
GROUP BY currency
)
GROUP BY currency


_____________
There never was a struggle in the soul of a good man that was not hard
S.Chushkin
Michael - последний "GROUP BY currency" убить.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Valick
этот запрос не проверял, мне ща на моей работе по щее дадут smile.gif
у меня такой запрос:
SELECT * FROM (SELECT MAX(`data`) `data`,currency FROM `data` WHERE `data` <= NOW() GROUP BY currency) a LEFT JOIN `data` b USING(`data`,currency)
естественно тип поля поправить до нормального

_____________
Стимулятор ~yoomoney - 41001303250491
Michael
Цитата (S.Chushkin @ 10.01.2013 - 13:59)
Michael - последний "GROUP BY currency" убить.

ну да, это я скопипастил, тут он не нужен уже.

_____________
There never was a struggle in the soul of a good man that was not hard
killer8080
Вот так вот, главное завести толпу, а там глядишь за вас всю работу сделают laugh.gif
Valick
у меня кстати созрел еще один запрос достаточно извращенный, надо будет проверить smile.gif
__
ну а с IN я и правда дал маху, даже не знаю как с этим дальше жить
я понимаю что у меня достаточно белых пятен, но чтоб вот так "з-за угла"...

_____________
Стимулятор ~yoomoney - 41001303250491
S.Chushkin
Цитата (killer8080 @ 10.01.2013 - 16:04)
Вот так вот, главное завести толпу, а там глядишь за вас всю работу сделают laugh.gif

В данном случае это не имеет значения - недостаток знаний вычисляется на раз (пара-другая дней, максимум неделя).
Т.е. ТС правильное решение бесполезно (как решение), только если как знание в копилку. А дать знание (поделиться), это нормально. Даже если задарма...

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
inpost
1 валюта за 1 день = 1 значение.
Для банка бывают до 100 валют
Банк может работать 365 дней в году.
Есть возможность, что валюта будет меняться на протяжении дня.

Банк, проработав 3 года получит 100`000 - 200`000 записей, через 5-6 лет и увеличении валют до 200-300 единиц (все страны) - уже миллион записей.

Каждый раз использовать временную таблицу, группировать... не лучший вариант, как по мне.

Поэтому лучше использовать кеширование, учесть, что кеширование по заданию мы сделаем внутри нашего скрипта, отсюда алгоритмы попадания, изменения данных в кеш-таблице и удаления записей будет выполнять ПХП скрипт с различными запросами. Так как нас просят просто показать финальный запрос, как будет выглядеть, то он выглядеть будет так:
SELECT `currency`, `rate` FROM `currency_cache`


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Valick
inpost, сам шучу сам смеюсь?


_____________
Стимулятор ~yoomoney - 41001303250491
waldicom
финально будет так:
$result = getWhatINeed();


_____________
Свои мозги еще никто не отменял.
Телепатов нету.
inpost
Valick
Я не понимаю шутки... ты в своём проекте с миллионами посетителей вроде Приват Банка для вывода курса будешь использовать такой запрос:
SELECT * FROM (SELECT MAX(`data`) `data`,currency FROM `data` WHERE `data` <= NOW() GROUP BY currency) a LEFT JOIN `data` b USING(`data`,currency)

Интересненько ты программируешь, очень интересненько...



Спустя 5 минут, 14 секунд inpost написал(а):
Valick
Правильно для вывода использовать кеш. Отсюда вопрос другой, решили поменять курс только 1 валюты из 200, ты будешь заново пересчитывать все курсы, или сделаешь запрос по одному курсу и обновишь лишь кеш данной валюты?
В общем заведомо неверное проектирование ты выбрал.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
S.Chushkin
Цитата (inpost @ 10.01.2013 - 21:52)
...Отсюда вопрос другой, решили поменять курс только 1 валюты из 200, ты будешь заново пересчитывать все курсы, или сделаешь запрос по одному курсу и обновишь лишь кеш данной валюты?
В общем заведомо неверное проектирование ты выбрал.

У наших людей иногда бывает одна проблемка, - придумывает себе трудности, а потом героически их преодолевает. Ваш случай такой. wink.gif

Для этой простой задачи достаточно простого решения. В частности, достаточно кеша mySQL, ибо на 500 млн.запросов в сутки/сервер, будут только 200 реальных, остальное из кеша. Причём, "реальный" будет выполняться заметно меньше секунды.
Конечно, более продвинутый кеш будет на порядок (где-то) быстрее, - а зачем?

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
inpost
S.Chushkin
Кеш не безграничный, забьет другую информацию кешем и всё, заново обработка.
Ты говоришь, что трудность... я этот скрипт за 10 минут напишу вместе с кешем и классом для работы с данными. И где тут трудности? Ладно бы были задача на несколько часов...

Ну да, ну да, относиться к поставленным задачам легкомысленно, чтобы потом через год снова всё исправлять, а ещё через 2 - опять и опять.

А зачем, чтобы сделать сразу 1 раз за 10 минут правильно и забыть про этот участок кода. Вот и всё.

Ах да, если ты считаешь, что написать 10 минут скрипт = героическое преодоление, то "Интересненько ты программируешь, очень интересненько...".

Я ввёл в поисковое поле "Креведка", и хочу показать сайт, в котором есть это слово... какая простая задача: SELECT * FROM `sites` WHERE `text` LIKE '%Креведка%'
Можешь скинуть эту реализацию в google.com... smile.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
inpost
И самое главное, блин, с этого надо было начинать, вдумайся в мой ответ на твои слова: "Конечно, более продвинутый кеш будет на порядок (где-то) быстрее, - а зачем? "
Ответ: при трудоустройстве ты претендуешь на самую высокую з/п из представленной вилки, поэтому ты должен показать свои способности поиска наиболее ПРОДВИНУТЫХ и правильных решений с наилучшей оптимизацией, чтобы у работодателя не было сомнений, что ты заслуживаешь наивысшую з/п. Вот и всё, выполняя тестовое задание работодатель хочет увидеть всё, что ты умеешь делать, и твои мысли по поводу наилучших оптимизаций.
Ты можешь показать простой код, тогда тебе скажут: "да, он умеет делать простой код". А когда станет вопрос о том, сможешь ли ты выполнить проект, который требует САМЫЙ ЛУЧШИЙ способ реализации - возникнут вопросы...
А теперь картину наоборот: ты показываешь крутой код, тогда тебе ответят: "да он умеет писать крутые коды", а когда станет вопрос, сможет ли он написать простой код - ответ очевидный, так же ДА! Потому что профессионалы могут писать простые коды на ровне с сложными, а вот новички только простые.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.