Как в таблице найти значение по ID, а затем по этому значению в этой же таблице найти последнюю запись?
Всем привет!
Как в таблице найти значение по ID, а затем по этому значению в этой же таблице найти последнюю запись?
Есть таблица carriers и в ней столбцы: id_carrier, id_ref, enable, delete
В данных столбцах заполнены записи, при которых id_carrier меняется в каждой записи, а вот id_ref прописывается одинаковый для разных id_carrier, например:
id_carrier, id_ref, enable, delete
99,99,1,1
100,99,1,1
101,99,1,1
102,99,1,0
Как можно получить запись с id_carrier=102 где столбец delete=0, если известно при создании запроса только id_carrier=99, то есть начальная запись при котором сформировалась запись с id_ref=99, одним запросом?
Нам id_ref неизвестен при запросе, известен всегда id_carrier, а он разный, и id_ref тоже может быть разным.
Смотрите, при изменении записи у id_carrier=99, создается id_carrier=100 и т.д.
Если создается новая запись в таблице, то с этой записи начинается свой id_ref и тд.
Как я понимаю логику, необходимо получить id_ref по известному id_carrier, а затем по полученному id_ref как то получить запись с последним id_carrier у которого delete=0.
select * from tbl
where
id_ref = (select id_ref from tbl where id_carrier = 99 limit 1)
and delete = 0
order by id_carrier desc
limit 1;
select tbl.*
from tbl
join (select id_ref from tbl where id_carrier = 99 limit 1) ref on ref.id_ref = tbl.id_ref
where delete = 0
order by id_carrier desc
limit 1;