gpt4 book ai didi

mysql - 结果sql为空时返回0

转载 作者:行者123 更新时间:2023-11-29 13:01:45 24 4
gpt4 key购买 nike

当结果集为空时,我可以返回0作为结果吗

SELECT 
SUM(`Uren`),
SUM(`Minuten`)
FROM
`Uren`
RIGHT JOIN `Project`
ON `Project`.`idProject` = `Uren`.`idProject`
RIGHT JOIN `Uursoort`
ON `Uursoort`.`idUursoort` = `Uren`.`idUursoort`
WHERE `idKlant` = 5
AND `Uren`.`Datum` > '2014-04-02'
GROUP BY `Uren`.`idProject`

首选输出(而不是空结果集):

sum('Uren')     sum('Minuten')
0 0

当我这样做时:

SELECT 
SUM(`Uren`),
SUM(`Minuten`)
FROM
`Uren`
RIGHT JOIN `Project`
ON `Project`.`idProject` = `Uren`.`idProject`
RIGHT JOIN `Uursoort`
ON `Uursoort`.`idUursoort` = `Uren`.`idUursoort`
WHERE `idKlant` = 5
AND `Uren`.`Datum` > '2014-04-02'
GROUP BY `Uren`.`idProject

因为有数据,所以我得到了正确的输出。但我需要得到 0 作为返回。我也在模型中尝试过这个:

    function rapport_detail_uren($idKlant,$start,$eind){
$this->db->select_sum('Uren');
$this->db->select_sum('Minuten');
$this->db->from('Uren');
$this->db->join('Uursoort','Uursoort.idUursoort=Uren.idUursoort','right');
$this->db->join('Project','Project.idProject=Uren.idProject','right');
if ($idKlant > 0){
$this->db->where('idKlant',$idKlant);}
if ($start != NULL){
$this->db->where('Uren.Datum >=', $start);
}

$this->db->group_by('Uren.idProject');

$query = $this->db->get();
if($query->num_rows()>0){
return $query->result();
}
else{
return 0;
}
}

最后一行返回 0。我想这可能会返回值 0,但这不起作用

最佳答案

您可以通过移动where来做到这一点条件进入on除最后一个表之外的所有表的子句(因为您正在使用 right outer join :

SELECT coalesce(SUM(`Uren`), 0), coalesce(SUM(`Minuten`), 0)
FROM `Uren` RIGHT JOIN
`Project`
ON `Project`.`idProject` = `Uren`.`idProject` AND
`Uren`.`Datum` > '2014-04-02' RIGHT JOIN
`Uursoort`
ON `Uursoort`.`idUursoort` = `Uren`.`idUursoort`
WHERE `idKlant` = 5 AND
GROUP BY `Uren`.`idProject`;

就我个人而言,我发现left outer join更容易遵循(“保留第一个表中的所有行”与“保留最后一个表中的所有行”),但同样的原则适用:where条件可以将外连接转变为内连接,因为外连接会生成意外的 NULL值。

您可能还需要移动 idklanton条款。我质疑你为什么按 uren.idProject 进行聚合,其中可能有 NULL值。

关于mysql - 结果sql为空时返回0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23241549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com