Показать сообщение отдельно

  #28  
Старый 09.09.2009, 22:40
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
С нами: 10143686

Репутация: 526
По умолчанию

Давно никто ничего не выкладывал здесь. А жаль. Разминка для мозга полезна
Ну что ж - выложу небольшую задачку. Она достаточно проста, но как говорится на безрыбье... В общем вы поняли =)
На данную задачку меня натолкнул следующий факт: все чащи люди неправильно проектируют структуру БД, а потом страдают.
Возьмем пример:
Код:
login     |     param     |   value
--------------------------------------
Alex      |   City        |   London
Alex      |   RegDate     |   22-04-2009
Alex      |   Email       |   aswer@yahoo.com
Nata      |   City        |   Paris
Nata      |   RegDate     |   15-07-2009
Nata      |   Email       |   dser@mail.com
Налицо безграмотнейшее составление структуры. Отношение не находится даже в 1НФ.
И как следствие у людей начинаются большие проблемы с составлением запросов =)
И начинают они плакаться в соцсетях с просьбами о помощи.
Так вот - нормальную структуру, допустим, выяснили, осталось сконвертить для нее данные.
Структура:
Код:
login | city | regdate | email
Т.е. задача состоит в том, что бы из вышеприведенной таблички одним запросом получить данные в формате, приведенном выше.

Дамп базы (для ленивых, что б не создавать структуру и не писать инсерты):
Код:
CREATE TABLE IF NOT EXISTS `tst` (
  `login` varchar(20) NOT NULL DEFAULT '',
  `param` varchar(10) NOT NULL DEFAULT '',
  `value` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`login`,`param`)
);

INSERT INTO `tst` (`login`, `param`, `value`) VALUES
('Alex', 'City', 'London'),
('Alex', 'Email', 'aswer@yahoo.com'),
('Alex', 'RegDate', '22-04-2009'),
('Nata', 'City', 'Paris'),
('Nata', 'Email', 'dser@mail.com'),
('Nata', 'RegDate', '15-07-2009');
Задача решается не одним способом =) Итак - разомните мозги, отложите на минутку свой "набор кавычек".
 
Ответить с цитированием