SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 23.04.2011 02:24:28

Vasja48
Участник
Зарегистрирован: 23.04.2011
Сообщений: 2

Требуется помощь в составлении запроса

необходимо составить запрос. Имеется oдна таблица, при изменении записи, создается новая запись с новым ИД, a в специальном поле (OrgID) прописывается ИД предыдущей записи:

Id     Name         OrgId     Status   
1     Record1     NULL     NotActive   
2     Record2        1     NotActive   
3     Record1     2     Active   
4     MyRecord     NULL     NotActive   
5     MyRecord     4     Active   
6     Record23    NULL     NotActive   
7     Record23    6     NotActive   
8     Record23    7     Deleted    
9     deletMBC    NULL     Deleted    
10     zazazaz     NULL     Active   
11     uio         NULL     NotActive   
12     uio        11     NotActive   
13     MyName        12     Active       

статус для старой записи становится - NotActive.
Вопрос, как имея ИД Активной записи найти все предыдущие??

Неактивен

 

#2 23.04.2011 09:54:25

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Требуется помощь в составлении запроса

Не очень понятно, что значит найти все предыдущие. Вы имели в виду предыдущие с тем же именем, что и у активной записи или?..

Если просто найти все предыдущие, то

select * from `t_4161` where not `Id`=13;

Если все предыдущие с таким же именем, как у последней (а следовательно активной) записи, то
select * from `t_4161` where (not `Id`=13) and `name`=(select name from `t_4161` where `Id`=13);

Отредактированно deadka (23.04.2011 09:55:34)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 23.04.2011 12:57:37

Vasja48
Участник
Зарегистрирован: 23.04.2011
Сообщений: 2

Re: Требуется помощь в составлении запроса

Например:
Была запись с ID -> 11. Потом в записи были сделаны изменения и запись получила новый ID ->12 (старый ID сохранен в поле OrgID). Дальше этой же записи изменили имя и запись опять получила новый ID (ID предыдущей версии сохранен в OrgID). Мне надо вывести всю историю зная ID последней записи. Спасибо.

Неактивен

 

#4 23.04.2011 15:43:07

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Требуется помощь в составлении запроса

Возможно ошибаюсь, но имхо задачу в такой постановке только что хранимой процедурой с рекурсией ( для вывода всей истории) писать придётся. Ну или на клиенте серией запросов.

Отредактированно deadka (23.04.2011 15:44:40)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 25.04.2011 19:48:07

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Требуется помощь в составлении запроса

На самом деле, это дерево, у которого не бывает более одной ветки из узла.
Следовательно, будут работать стандартные денормализации для деревьев
(левое-правое и табличка «все родители»).

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson