我在运行查询时遇到这种情况:
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/