Как получить новейшие данные с помощью столбца `create_at` - PullRequest
0 голосов
/ 25 мая 2018

Как я могу запросить данные, где id_konsul = 4, и как я могу получить последние staflow из created_at, если они совпадают?

пример

id  id_konsul   staflow created_at

1   4   1   21/05/2018 11.03
2   4   2   22/05/2018 11.03
3   4   3   23/05/2018 11.03
4   4   4   24/05/2018 11.03
5   4   5   25/05/2018 11.03
6   4   6   26/05/2018 11.03
7   4   7   27/05/2018 11.03
8   4   6   28/05/2018 11.03
9   4   7   29/05/2018 11.03
10  4   7   30/05/2018 11.03
11  4   8   31/05/2018 11.03

чем я получаю это

id  id_konsul   staflow created_at
1   4   1   21/05/2018 11.03
2   4   2   22/05/2018 11.03
3   4   3   23/05/2018 11.03
4   4   4   24/05/2018 11.03
5   4   5   25/05/2018 11.03
8   4   6   28/05/2018 11.03
10  4   7   30/05/2018 11.03
11  4   8   31/05/2018 11.03

Ответы [ 4 ]

0 голосов
/ 25 мая 2018

попробуйте этот запрос

SELECT * FROM test1 n 
WHERE created_at=(SELECT MAX(created_at)FROM test1 
  WHERE staflow=n.staflow) 
order by id
0 голосов
/ 25 мая 2018

Пожалуйста, попробуйте этот запрос.

SELECT * FROM table_name WHERE id_konsul = 4 ORDER BY created_at DESC LIMIT 1; 
0 голосов
/ 25 мая 2018

Чтобы получить последнюю строку для каждого атрибута staflow, вы можете использовать самостоятельное соединение

select a.*
from demo a
join (
    select id_konsul,staflow, max(created_at) created_at
    from demo
    where id_konsul = 4
    group by id_konsul, staflow
) b on a.staflow = b.staflow
    and a.id_konsul = b.id_konsul 
    and a.created_at = b.created_at;

или использовать левое соединение

select a.*
from demo a
left join demo b on a.id_konsul = b.id_konsul
                and a.staflow = b.staflow 
                and a.created_at < b.created_at
where a.id_konsul = 4 
and b.id_konsul is null

Демо

Для написания вышеупомянутых запросов с помощью построителя запросов laravel вы можете использовать следующие ссылки

Laravel Eloquent выбрать все строки с максимальным созданием

Laravel - получить последнюю записькаждого типа UID

Группа Laravel Eloquent по самой последней записи

0 голосов
/ 25 мая 2018

Вы можете использовать INNER JOIN.

Пример:

SELECT t0.* from {TABLE_NAME} AS t0 INNER JOIN {TABLE_NAME} t1 ON t0.staflow = t1.staflow WHERE t0.created_at > t1.created_at and t0.id_konsul = 4
...