如何使用 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 ");
我有以下 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 ");