Форум.orn
HARD&SOFT => Программирование => WEB => Тема начата: Тоха от 24 Июня 2009, 11:13:48
-
Может быть вопрос и элементарный, сразу говорю, читать мануал нет времени.
есть база данных
| date | time | animal | action |
------------------------------
| 22/06/09 | 22.00 | rabbit | спит
| 7/05/09 | 15.15 | cat | ест
| 10/06/09 | 08.40 | rabbit | размножается
| 20/07/09 | 22.00 | rabbit | спит
| 7/05/09 | 05.35 | mouse| ест
| 10/06/09 | 08.00 | cat | размножается
| 22/06/09 | 14.03 | rabbit | спит
| 7/05/09 | 23.48 | cat | ест
| 10/06/09 | 08.40 | mouse | размножается
как сделать выборку животных, последним действием которых было размножение?
-
Ответ судя по всему неверный, поскольку не факт, что размножение будет последним действием существа.
-
select lanimal from (
select last(animal) as lanimal ,last(action) as laction from table_name order by date desc,time desc group by 1,2
) where laction='размножается'
чтото типо этого. в синтаксисе не ручаюсь, не проверял
-
select * from _имя таблицы_
where action=размножается
-
mimicria прав, запрос
select * from _имя таблицы_
where action=размножается
выдает все записи, где action=размножается! А мне нужны только те, где размножение является последним действием за определенный промежуток времени.
-
Для начала не плохо было бы сделать нормальную базу, где дата и время в одной таблице =) все было бы намного проще!
-
ну это просто пример!
на самом деле дата и время у меня хранятся в одной ячейке в формате timestamp, как положено.
-
select * from (select * from animals where time = (select max(time) from animals a2 where animals.animal = a2.animal)) as z where action = 'размножается'
Ну естественно колонка time это timestamp.
-
SELECT * FROM table_name WHERE (SELECT action FROM table_name ORDER BY date DESC LIMIT 0,1)='размножается'
date должен быть datetime
-
select * from (select * from animals where time = (select max(time) from animals a2 where animals.animal = a2.animal)) as z where action = 'размножается'
Ну естественно колонка time это timestamp.
работать не будет :)
-
SELECT * FROM table_name WHERE (SELECT action FROM table_name ORDER BY date DESC LIMIT 0,1)='размножается'
date должен быть datetime
работать не будет.
если последняя запись была 'размножается' - выберет все записи, иначе ничего не выберет.
т.к. вложенный в условие запрос запрос (SELECT action FROM table_name ORDER BY date DESC LIMIT 0,1) возвращает последнее действие не конкретного животного, а глобально. (т.е. получается where 'размножается'='размножается')
select * from (select * from animals where time = (select max(time) from animals a2 where animals.animal = a2.animal)) as z where action = 'размножается'
Ну естественно колонка time это timestamp.
работать не будет :)
работает. проверял.
-
SELECT * FROM table_name WHERE (SELECT action FROM table_name ORDER BY date DESC LIMIT 0,1)='размножается'
date должен быть datetime
работать не будет.
если последняя запись была 'размножается' - выберет все записи, иначе ничего не выберет.
т.к. вложенный в условие запрос запрос (SELECT action FROM table_name ORDER BY date DESC LIMIT 0,1) возвращает последнее действие не конкретного животного, а глобально. (т.е. получается where 'размножается'='размножается')
select * from (select * from animals where time = (select max(time) from animals a2 where animals.animal = a2.animal)) as z where action = 'размножается'
Ну естественно колонка time это timestamp.
работать не будет :)
работает. проверял.
я торможу :)