|
MySQL.RU - Webboard
Вернуться
Представление с вычисляемыми полями (Student) 10/04/2009 - 13:25:16
Re: Представление с вычисляемыми полями (Student) 10/04/2009 - 13:44:17
Re: Представление с вычисляемыми полями (Student) 10/04/2009 - 13:57:17
Re: Представление с вычисляемыми полями (Алекс) 10/04/2009 - 21:02:43
Re: Представление с вычисляемыми полями (Student) 11/04/2009 - 13:34:16
> Original message text:
> From: Student - 10/04/2009 - 13:25:16
> Subject:Представление с вычисляемыми полями
> -----------------
> Здравтсвуйте подскажите пожалуйста по вопросу:
>
> Есть таблица People
> id_people
> name
> date_born
> Делаю представления чтобы вычислялся возраст
>
> create view TEST_VIEW AS SELECT
> people.id_people, people.name,
> (YEAR(NOW())-YEAR(people.date_born))-(RIGHT(CURRENT_DATE(),5)<RIGHT(people.date_born,5))
> AS vozrast FROM people GROUP BY people.id_people
>
> Все работает, а вот как сделать чтобы в представление вычислялось дополнительное поле допустим Pensioner с условием если возраст больше 60 то в поле храниться значение Yes иначе No.
>
From: Student - 11/04/2009 - 13:34:16
Subject:Представление с вычисляемыми полями
-----------------
Алекс спасибо за совет с case действительно удобно им пользоваться. Для меня даже удобнее чем if.
Собственно сделал такое представление,которое удовлетворяет меня
технически, но не эстетически
create view TEST_VIEW AS SELECT people.id_people, people.name,
people.Date_born,
(YEAR(NOW())-YEAR(people.date_born))-(RIGHT(CURRENT_DATE(),5)<RIGHT(people.date_born,5))
AS vozrast,
CASE WHEN (YEAR(NOW())-YEAR(people.date_born))-(RIGHT(CURRENT_DATE(),5)<RIGHT(people.date_born,5))>60 THEN 'YES' ELSE 'No' END as pensioner
FROM people
GROUP BY people.id_people
оно работает, но мне не нравиться один момент - то что надо заново использовать запрос для определения возраста человека, а не взять уже из TEST_VIEW.vozrast вот так:
create view TEST_VIEW AS SELECT people.id_people, people.name,
people.Date_born,
(YEAR(NOW())-YEAR(people.date_born))-(RIGHT(CURRENT_DATE(),5)<RIGHT(people.date_born,5))
AS vozrast,
CASE WHEN TEST_VIEW.vozrast>60 THEN 'YES' ELSE 'No' END as pensioner
FROM people
GROUP BY people.id_people
Понятно что пока представление не создано с него нельзя брать данные. Как можно обойти данную ситуацию и стоит ли это вообще делать. У меня возникает только одна идея делать представление вычисляющее возраст и потом уже брать данные с него, но это кажется громоздко и не очень удобно. Какие у Вас будут мнения?
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
35348
|
|