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

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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1677
Пользователь №: 16955
На форуме: 7 лет, 9 месяцев, 15 дней
Карма: 94




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

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

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

http://dev.mysql.com/doc/refman/5.0/en/identifiers.html


--------------------
Programming: Private lessons via skype £45/h

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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 21 день
Карма: 167




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

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


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

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



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

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




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

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

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

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


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

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



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

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8740
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 9 дней
Карма: 591




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
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1677
Пользователь №: 16955
На форуме: 7 лет, 9 месяцев, 15 дней
Карма: 94




Цитата (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);


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



--------------------
Programming: Private lessons via skype £45/h

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

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



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

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6065
Пользователь №: 18498
На форуме: 7 лет, 4 месяца, 14 дней
Карма: 256




Цитата (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  
Дата
Цитировать сообщение

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 21 день
Карма: 167




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


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

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



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

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




Цитата (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
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1677
Пользователь №: 16955
На форуме: 7 лет, 9 месяцев, 15 дней
Карма: 94




Цитата (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

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



--------------------
Programming: Private lessons via skype £45/h

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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 21 день
Карма: 167




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


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

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



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

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6065
Пользователь №: 18498
На форуме: 7 лет, 4 месяца, 14 дней
Карма: 256




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  
Дата
Цитировать сообщение

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



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

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




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

laugh.gif

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


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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 21 день
Карма: 167




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

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


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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1677
Пользователь №: 16955
На форуме: 7 лет, 9 месяцев, 15 дней
Карма: 94




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

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


Если Вы хотите по времени то просто измените "%Y-%m-%d и добавьте сюда,минуты и секунды.
В здании нет минут и секунд.


--------------------
Programming: Private lessons via skype £45/h

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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 21 день
Карма: 167




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


--------------------
wmr - R281553014107
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 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса