为什么mysql order by keyword不能按预期使用GROUP by keyword?

时间:2016-08-31 10:05:06

标签: php mysql

我有以下表格列:

1)用户

Sub CreateChart()
Dim rng As Range
Set rng = ActiveSheet.Range("A4:C8")
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
    .SetSourceData Source:=Range("Feuil1!$A$4:$B$8")
    .SeriesCollection.NewSeries
    .SetSourceData Source:=rng, PlotBy:=xlColumns
    .ChartType = xlBarStacked
    .SeriesCollection(1).Interior.ColorIndex = 5  'Change value to change color
    End With
End Sub

2)项目

user_id  username

3)project_status

p_id   p_name

4)公司

psdi    p_id    cdid   cid   sid  short_list   res_sent   status_date

5)状态

cid   company_name

6)projects_log

sid    status_name    status_order    is_cv_sent 

现在,在此pl_id cdid project_name p_id user_id status date_time 表中存在相同的projects_log值。

我想将最新p_id的所有唯一p_id显示为DESC订单..

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

date_time

更新:

现在使用此查询但显示错误消息:

  

mysqli_fetch_array()期望参数1为mysqli_result,boolean   给定

$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'警告:mysqli_fetch_array()   期望参数1为mysqli_result,布尔值为   第648行的C:\ xampp \ htdocs \ dev \ frontend \ getContactDetails.php

1 个答案:

答案 0 :(得分:1)

尝试此查询: -

Select * from (
SELECT
    pl.pl_id,pl.cdid,pl.project_name,pl.p_id,pl.user_id,pl.status,pl.date_time,
    ps.psid,ps.cid,ps.sid,ps.short_list,ps.res_sent,ps.status_date,  
    u.username, 
    p.p_name, 
    c.company_name, 
    s.status_name, 
    pl.pl_id grp_use
    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' 
    ORDER BY pl.pl_id DESC
) as new_tab
GROUP BY new_tab.grp_use