我在运行查询时遇到这种情况:

ACCOUNT
-----------
account_id  account_name
1           STARCLASS
2           STEPWAY


COMPANY
-----------
company_id     company_account_id     company_name
1              1                      STORE 01
2              2                      STORE 01
3              2                      STORE 02


RESUME
-----------
resume_id  resume_company_id  resume_start_date   resume_end_date    resume_total
1          1                  2017-01-01          2017-01-31         300.00
2          2                  2017-01-01          2017-01-31         147.00
3          3                  2017-01-01          2017-01-31         50.00


QUERY
-----------
SELECT *
FROM resume
LEFT JOIN company ON company_id = resume_company_id
LEFT JOIN account ON account_id = company_account_id
GROUP BY account_id

WHILE
-----------
while ($i < $num) {
.......
$account_name = mysql_result($result,$i,"account_name");
$company_name = mysql_result($result,$i,"company_name");
.......


QUERY RESULTS
-----------
ID    company_name              account_name    resume_start_date   resume_end_date    resume_total
1     STORE 01                  STARCLASS       2017-01-01          2017-01-31         300.00
2     STORE 01                  STEPWAY         2017-01-01          2017-01-31         147.00
3     **NOT SHOW COMPANY NAME**                 2017-01-01          2017-01-31         50.00
      **AND ACCOUNT NAME**


当我按ACCOUNT_ID分组时,最后一行变量liks account_name和company_name显示为空白。

有办法解决吗?
有什么提示吗?

谢谢大家的帮助

最佳答案

应当包括未通过聚合函数传递的表达式。同样,我不确定您使用的是哪个软件包版本,但是我的结果仅包括两行。

要么


您打算使用ORDER BY而不是GROUP BY。 GROUP BY主要用于将聚合应用于行的“组”(例如SELECT SUM(resume_total).... GROUP BY account_id)。
您的SQL(不兼容)正在创建一个错误,其中将LEFT JOIN子句的结果分组,而您的SELECT * FROM resume仍在执行(3条记录,但只有2条记录的LEFT JOIN值值) 。
还有别的


如果希望列表按顺序排列,请使用ORDER BY,或者使用具有选定表达式或聚合函数的GROUP BY。

关于php - 查询未按预期显示帐户名和公司名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42350839/

10-16 13:32