Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте, помогите пж. Есть таблица Dan. В таблице имеются поля POL и DATA_R, по ним и необходим запрос. Суть запроса: вывести все данные о женщинах, которые младше 50 лет.
Преподаватель сказал что необходимо прописать условие через функцию которая выводит текущую дату, я написала: SELECT * FROM dan WHERE data_r>CURDATE()-INTERVAL 50 YEAR AND pol='ж';
Преподаватель сказал, что этот запрос неверный. Помогите пожалуйста.
Неактивен
В каком точном формате хранится возраст ?
Скорее всего требуется преобразовать формат даты примерно так
Неактивен
kravcneger написал:
В каком точном формате хранится возраст ?
[/syntax]
data_r хранится в формате гггг-мм-дд
Неактивен
%Y%m%d
Неактивен
SELECT * FROM dan WHERE data_r>(Date_Format(CURDATE()- INTERVAL 50 YEAR,'Y%h%m') AND pol='ж';
это будет так?
Неактивен
Неактивен
evgeny написал:
SELECT * FROM dan WHERE data_r>CURDATE()-INTERVAL 50 YEAR AND pol='ж';
Но тут важно чтоб поле data_r было типа "DATE" или "DATETIME"
Если оно у вас текстовое, тогда нужно преобразовывать с помощью фукции STR_TO_DATE
Неактивен
это то как было и потом исправила
Как по-другому то можно этот запрос написать?
Неактивен
Тип поля data_r "date", правильно у Вас запрос составлен, вот прямое доказательство:
mysql> create table dan(surname varchar(80), data_r date,pol char); Query OK, 0 rows affected (0.00 sec) mysql> insert into dan values('Ivanova','1950-01-01','ж'),('Petrova','1960-01-01','ж'),('Sidorova','1970-01-01','ж'),('Averyanova','1980-01-01','ж'); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> select * from dan; +------------+------------+------+ | surname | data_r | pol | +------------+------------+------+ | Ivanova | 1950-01-01 | ж | | Petrova | 1960-01-01 | ж | | Sidorova | 1970-01-01 | ж | | Averyanova | 1980-01-01 | ж | +------------+------------+------+ 4 rows in set (0.00 sec) mysql> SELECT * FROM dan WHERE data_r>CURDATE()-INTERVAL 50 YEAR AND pol='ж'; +------------+------------+------+ | surname | data_r | pol | +------------+------------+------+ | Sidorova | 1970-01-01 | ж | | Averyanova | 1980-01-01 | ж | +------------+------------+------+ 2 rows in set (0.00 sec)
Как видим, выбираются только женщины моложе 50 лет.
Если преподаватель будет настаивать на том, что запрос неправильный - уточните что именно неправильно.
Запрос по-другому написать - да можно, но зачем? Рассмотреный вариант запроса самый логичный.
Отредактированно deadka (14.11.2011 00:58:55)
Неактивен