Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (7) 1 2 [3] 4 5 ... Последняя » ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Тестовое задание - помогите выполнить, Прислали мне тестовое задание
Oyeme  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Reality is wrong. Dreams are for real
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1815
Пользователь №: 16955
На форуме: 16 лет, 1 месяц, 27 дней
Карма: 98




Цитата (Valick @ 10.01.2013 - 10:42)
Oyeme, тестили? судя по отсутствию обратных кавычек нет
можете не пробовать, не работает так как надо
могу даже рассказать почему не верно

Проверьте.Перед тем как писать ерунду.

П.С почитайте для чего нужны кавычки.

http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6464
Пользователь №: 35718
На форуме: 12 лет, 5 месяцев, 3 дня
Карма: 208




проверил, результат не верный
2012-01-03 EUR 40.3
2012-01-03 USD 29.9

1) функция IN принимает данные перечисленные через запятую, вы же пхаете туда таблицу
2) вы никогда не угадаете какой будет результат при GROUP BY (это на счет последнего GROUP BY )
__
зачем нужны кавычки я прекрасно знаю, просто data с date попутал, во всем остальном милости прошу оправдаться smile.gif


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 883
Пользователь №: 36058
На форуме: 12 лет, 3 месяца, 26 дней
Карма: 43




Цитата (Oyeme @ 10.01.2013 - 15:25)
Проверьте.Перед тем как писать ерунду.

А Вы забейтесь на ящик конька, что он не прав.
п.с.
Valick с тебя бутылка из этого ящика wink.gif

upd
Эх, не успел.
Valick, зря расжевал - а в друг он поспорил бы.

Это сообщение отредактировал S.Chushkin - 10.01.2013 - 15:37


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9631
Пользователь №: 26630
На форуме: 14 лет, 1 месяц, 21 день
Карма: 664




SELECT * 
FROM
(SELECT * FROM `currency` ORDER BY `date` DESC) AS `t`
GROUP BY `currency`
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Oyeme  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Reality is wrong. Dreams are for real
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1815
Пользователь №: 16955
На форуме: 16 лет, 1 месяц, 27 дней
Карма: 98




Цитата (Valick @ 10.01.2013 - 11:30)
проверил, результат не верный
2012-01-03  EUR  40.3
2012-01-03  USD  29.9

1) функция IN принимает данные перечисленные через запятую, вы же пхаете туда таблицу
2) вы никогда не угадаете какой будет результат при GROUP BY (это на счет последнего GROUP BY )
__
зачем нужны кавычки я прекрасно знаю, просто data с date попутал, во всем остальном милости прошу оправдаться :)

1.IN() syntax can also be used to write certain types of subqueries
http://dev.mysql.com/doc/refman/5.0/en/any...subqueries.html
Читаем.
2.
Для Вас dump.
INSERT INTO `data` VALUES ('2012-01-09', 'USD', 12);
INSERT INTO `data` VALUES ('2012-01-01', 'EUR', 13);
INSERT INTO `data` VALUES ('2012-01-02', 'USD', 14);
INSERT INTO `data` VALUES ('2012-01-05', 'EUR', 14);
INSERT INTO `data` VALUES ('2012-01-02', 'USD', 18);
INSERT INTO `data` VALUES ('2012-01-11', 'USD', 9);
INSERT INTO `data` VALUES ('2012-01-06', 'EUR', 147);


Каков ответ будет в этом случаи?

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Michael  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6348
Пользователь №: 18498
На форуме: 15 лет, 8 месяцев, 26 дней
Карма: 269




Цитата (S.Chushkin @ 10.01.2013 - 12:49)
Цитата (Valick @ 10.01.2013 - 14:20)
Возможно с union
что-то сильно сомневаюсь, поэтому даже не думал в этом направлении

Я тоже не уверен в большей эффективности, поэтому тестировать надо (на реальных данных).
А запрос элементарный:
(select * from table
where
currency= "usd" and date <= ...
order by date desc
limit
1)
union
(select * from table
where
currency= "eur" and date <= ...
order by date desc
limit
1)

laugh.gif


--------------------
There never was a struggle in the soul of a good man that was not hard
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6464
Пользователь №: 35718
На форуме: 12 лет, 5 месяцев, 3 дня
Карма: 208




2012-01-06 EUR 147
2013-03-10 USD 50
стоп не в ту таблицу проинсертил
5 сек


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 883
Пользователь №: 36058
На форуме: 12 лет, 3 месяца, 26 дней
Карма: 43




Цитата (Valick @ 10.01.2013 - 15:30)
1) функция IN принимает данные перечисленные через запятую, вы же пхаете туда таблицу
2) вы никогда не угадаете какой будет результат при GROUP BY (это на счет последнего GROUP BY )

1) не прав
2) 100%
Кстати, если запрос Oyeme чуть поправить, то всё будет работать правильно (решение 2-го пункта). Но, думаю, он будет чуть менее эффективным, чем первый запрос (с max и join).


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Oyeme  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Reality is wrong. Dreams are for real
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1815
Пользователь №: 16955
На форуме: 16 лет, 1 месяц, 27 дней
Карма: 98




Цитата (Valick @ 10.01.2013 - 11:44)
2012-01-06 EUR 147
2013-03-10 USD 50

Откуда Вы взяли USD 50 ?

Ответ:

2012-01-06 EUR 147
2012-01-11 USD 9

Что и выдает запрос.

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6464
Пользователь №: 35718
На форуме: 12 лет, 5 месяцев, 3 дня
Карма: 208




S.Chushkin, на счет первого могу ошибаться, но раньше IN работала только со строкой


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Michael  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6348
Пользователь №: 18498
На форуме: 15 лет, 8 месяцев, 26 дней
Карма: 269




Oyeme, в твоем запросе надо не data IN, а (currency,data) IN соответственно и внутри.
И тогда все будет правильно.


--------------------
There never was a struggle in the soul of a good man that was not hard
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 883
Пользователь №: 36058
На форуме: 12 лет, 3 месяца, 26 дней
Карма: 43




Цитата (Michael @ 10.01.2013 - 15:43)

laugh.gif

А зря смеётесь, я пару раз сталкивался, что решение с union работает на порядок быстрее, чем "красивый" запрос. И даже получал за такое "решение" денюшку wink.gif , ибо узкое место было.


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6464
Пользователь №: 35718
На форуме: 12 лет, 5 месяцев, 3 дня
Карма: 208




Цитата
Что и выдает запрос.

потому что у вас нет в наборе одинаковых дат EUR и USD
или карта так легла, на счет GROUP BY я уверен
да и к чему это?
вы с набором из ТЗ получите правильный ответ по ТЗ


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Oyeme  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Reality is wrong. Dreams are for real
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1815
Пользователь №: 16955
На форуме: 16 лет, 1 месяц, 27 дней
Карма: 98




В этом под-запросе Вы выбирает максимально ДАТЫ для каждой валюты.
Ничего поправлять Нинадо.
Все работает как надо.С самого начала.

	SELECT
MAX(DATE_FORMAT(data,"%Y-%m-%d"))
FROM data
GROUP BY currency


Если Вы хотите по времени то просто измените "%Y-%m-%d и добавьте сюда,минуты и секунды.
В здании нет минут и секунд.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6464
Пользователь №: 35718
На форуме: 12 лет, 5 месяцев, 3 дня
Карма: 208




Oyeme, в последнем GROUP результат непредсказуем, этого достаточно


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (7) 1 2 [3] 4 5 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса