
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
|
![]() ![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 6347 Пользователь №: 18498 На форуме: Карма: 269 ![]() |
Тут фишка в том, что они вносят в БД по дате курс и он становится с этого момента текущим.
Есть "самая поздняя" запись 2012-02-01 USD 29 Соответственно сейчас позже чем 1 февраля. Как получить курс евро - самая "последняя" запись - 2012-01-03 EUR 40,3 Вот это текущий сейчас курс евро на сайте. Вот для таких условий надо решить задачу. -------------------- There never was a struggle in the soul of a good man that was not hard
|
![]() |
|||
![]() ![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 6347 Пользователь №: 18498 На форуме: Карма: 269 ![]() |
Тебе еще рано на вакансии претендовать. Этим решением ты продемонстрировал им что: 1) ты элементарно думаешь слабовато 2) знания базового sql страдают Этого достаточно чтобы с тобой дальше не иметь дел. -------------------- There never was a struggle in the soul of a good man that was not hard
|
||
![]() |
|
![]() ![]() Пофигист ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 883 Пользователь №: 36058 На форуме: Карма: 43 ![]() |
Michael почти прав и всё же не прав.
"Текущий курс" это курс на текущую дату. Текущей датой может быть любая дата в принципе, заданная юзером, но как правило используют дату на "сегодня". Т.е. задачу можно описать так: найти последние записи по всем валютам с датой <= текущей. (в пределах теста, конечно) Также согласен с Michael - ТС надо основательно подтянуть базовые знания по PHP и SQL, тогда шансов пройти тесты будет заметно больше. -------------------- |
![]() |
|||||||
![]() ![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 837 Пользователь №: 32378 На форуме: Карма: 50 ![]() |
По ТЗ подходит ситуация что сегодня 2012-01-31 и ЦБ уже установил курс на завтра, и этот курс уже есть в БД. MAX() точно не подходит -------------------- VPS от 5$, первые 2 месяца - бесплатно.
|
||||||
![]() |
|||||
![]() ![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 6347 Пользователь №: 18498 На форуме: Карма: 269 ![]() |
Обрати внимание на задание:
Т.е. в задании очевидно имеется ввиду текущий курс - это теперь, т.е. момент выполнения запроса. Если бы было задание найти текущий курс на любую дату, это было бы более общее задание, но не оно требуется к выполнению. Это тоже момент для оценки - выполнять что требуется. -------------------- There never was a struggle in the soul of a good man that was not hard
|
||||
![]() |
|||
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
где в задании написано ЦБ? но даже если так, то мой запрос легко отредактировать добавив date <= [NOW() или опеределенная дата], а теперь я бы хотел посмотреть ваш запрос без GROUP BY & MAX() c одним только NOW()... но сначала ответьте на вопрос, почему ЦБ, потому что вам так сильно хочется? ![]() по мне так лучше написать универсальный запрос, который может работать не только с ЦБ, но и с теми банками которые хоть 100 раз на день меняют курс -------------------- |
||
![]() |
|||
![]() ![]() Новичок ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 1704 Пользователь №: 31058 На форуме: Карма: 24 ![]() |
date("Y-m-d"); -------------------- |
||
![]() |
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
dron4ik,
![]() в теме уже написано про NOW(), но этого мало -------------------- |
![]() |
|||
![]() ![]() Пофигист ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 883 Пользователь №: 36058 На форуме: Карма: 43 ![]() |
Может быть, может быть... Кстати, запрос получается не совсем элементарный. Что-то вроде: select j.* from ( и "currency,date" должно быть уникальным п.с. И не факт, что это наилучший. Возможно с union будет более эффективный, хотя и не универсальный. -------------------- |
||
![]() |
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
S.Chushkin, на то оно и тестовое задание, отправил вам писмецо, не хотел выкладывать готовый запрос, но вы уже практически его показали
Возможно с union что-то сильно сомневаюсь, поэтому даже не думал в этом направлении -------------------- |
![]() |
|
![]() ![]() Reality is wrong. Dreams are for real ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 1815 Пользователь №: 16955 На форуме: Карма: 98 ![]() |
SELECT * FROM data WHERE data IN ( |
![]() |
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
Oyeme, тестили? судя по отсутствию обратных кавычек нет
можете не пробовать, не работает так как надо могу даже рассказать почему не верно -------------------- |
![]() |
|||
![]() ![]() Пофигист ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 883 Пользователь №: 36058 На форуме: Карма: 43 ![]() |
Я тоже не уверен в большей эффективности, поэтому тестировать надо (на реальных данных). А запрос элементарный: (select * from table -------------------- |
||
![]() |
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
S.Chushkin, ну...
а если валют будет не 2, а 100? я конечно понимаю что его можно собрать не руками, но за 100 селектов мускул вам точно спасибо не скажет ![]() -------------------- |
![]() |
|||
![]() ![]() Пофигист ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 883 Пользователь №: 36058 На форуме: Карма: 43 ![]() |
Ну 100 и 100, не важно. Повторюсь, - тестировать надо, на реальных данных. И дело не в количестве запросов, а в скорости выполнения запроса. Какой из них эффективнее - я не знаю. Хотя первый выглядит заметно красивше ![]() С другой стороны, в реальной системе всё равно результат будет кешироваться, поэтому разница в 0.01 и даже в 0.1 секунд в запросах не имеет значения (как правило). -------------------- |
||
![]() |
![]() ![]() ![]() |