![]()  | 
		
Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте, помогите пж. Есть таблица 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)
Неактивен