如何使用 GROUP BY 和 ORDER BY 关键字从 table 获取数据?

How to get data from table using GROUP BY and ORDER BY keyword?

我有以下 table 列:

1) 用户

user_id  username

2) 个项目

p_id   p_name

3) project_status

psdi    p_id    cdid   cid   sid  short_list   res_sent   status_date

4) 公司

cid   company_name

5) 状态

sid    status_name    status_order    is_cv_sent 

6) projects_log

pl_id   cdid    project_name     p_id   user_id   status   date_time    

现在,在这个 projects_log table 中存在相同的 p_id 值。

我想显示所有具有最新 date_time. 的唯一 p_id 作为 DESC 顺序,其中 pl.cdid = $cdid

我正在使用以下查询但无法获得结果。它没有向我显示所有独特的 p_id 作为 date_time DESC 顺序 :(

$get_log = mysqli_query($link, "SELECT 
    pl.*, 
    u.username, 
    p.p_name, 
    c.company_name, 
    s.status_name, 
    ps.* 
    FROM projects_log AS pl 
    LEFT JOIN users AS u ON u.user_id =  pl.user_id 
    LEFT JOIN projects AS p ON p.p_id = pl.p_id     
    LEFT JOIN project_status AS ps ON ps.p_id = pl.p_id 
    LEFT JOIN company AS c ON c.cid = ps.cid 
    LEFT JOIN status AS s ON s.sid = ps.sid 
    WHERE pl.cdid = '$cdid' GROUP BY pl.p_id
    ORDER BY pl.pl_id DESC ");

使用下面的查询,您将能够通过 p_id 实现分组,并且能够获得最大 date_time 行的值。

$get_log = mysqli_query($link, "SELECT 
    pl.*, 
    u.username, 
    p.p_name, 
    c.company_name, 
    s.status_name, 
    ps.* 
    FROM (
        select MAX(date_time) as MaxDateTime,p_id from projects_log group by p_id
    ) as mpl join projects_log AS pl on mpl.MaxDateTime = pl.date_time and mpl.p_id = pl.p_id
    LEFT JOIN users AS u ON u.user_id =  pl.user_id 
    LEFT JOIN projects AS p ON p.p_id = pl.p_id     
    LEFT JOIN project_status AS ps ON ps.p_id = pl.p_id 
    LEFT JOIN company AS c ON c.cid = ps.cid 
    LEFT JOIN status AS s ON s.sid = ps.sid 
    WHERE pl.cdid = '$cdid'
    ORDER BY pl.pl_id DESC ");