Как в таблице найти значение по ID, а затем по этому значению в этой же таблице найти последнюю запись?

Ссылка скопирована
1 ответ

Всем привет!

Как в таблице найти значение по 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...

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Стас DB Ответ

Для того чтобы найти значение по ID в таблице и затем найти последнюю запись по этому значению, вам необходимо выполнить два запроса к базе данных.

Сначала вам нужно выполнить запрос, который найдет значение по ID. Предположим, что у вас есть таблица `users` с полями `id` и `name`. Для поиска значения по ID вы можете использовать следующий SQL запрос:

SELECT name FROM users WHERE id = 123;

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;

SELECT * FROM logs WHERE user_id = 123 ORDER BY timestamp DESC LIMIT 1;

Здесь `123` - это значение, которое вы нашли в предыдущем запросе. Замените его на нужное вам значение.

Таким образом, с помощью двух SQL запросов вы сможете найти значение по ID в таблице и затем найти последнюю запись с этим значением. Не забудьте заменить названия таблиц и полей на соответствующие в вашей базе данных.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно