Как в таблице найти значение по 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, одним запросом?
Дополнительно:
select * from tbl where id_ref = 99 and delete = 0 order by id_carrier desc limit 1; |
select * from tbl where id_ref = 99 and delete = 0 order by id_carrier desc limit 1;
https://sqlize.online/sql/psql15/852e8e4ac5e4d1906...
- Нам 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;
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;
https://sqlize.online/sql/psql15/7d486a5ac20547b92...
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы найти значение по ID в таблице и затем найти последнюю запись по этому значению, вам необходимо выполнить два запроса к базе данных.
Сначала вам нужно выполнить запрос, который найдет значение по ID. Предположим, что у вас есть таблица `users` с полями `id` и `name`. Для поиска значения по ID вы можете использовать следующий SQL запрос:
SELECT name FROM users WHERE id = 123;
Здесь `123` - это ID, которое вы ищете. Замените его на нужное вам значение.
После того как вы найдете значение по ID, вам нужно выполнить запрос, который найдет последнюю запись с этим значением. Предположим, что у вас есть таблица `logs` с полями `user_id` и `timestamp`. Для поиска последней записи по значению, найденному в предыдущем запросе, вы можете использовать следующий SQL запрос:
SELECT * FROM logs WHERE user_id = 123 ORDER BY timestamp DESC LIMIT 1;
Здесь `123` - это значение, которое вы нашли в предыдущем запросе. Замените его на нужное вам значение.
Таким образом, с помощью двух SQL запросов вы сможете найти значение по ID в таблице и затем найти последнюю запись с этим значением. Не забудьте заменить названия таблиц и полей на соответствующие в вашей базе данных.