首页 > 解决方案 > 在表中显示值,即使查询返回无

问题描述

如果表书 trx 中没有计数行到我的 php/html 表中,我想显示值 0。但是当我尝试在 SQL 中查询时,它只显示在 book trx 中有值的行。

SQL查询

SELECT book_class, COUNT(*) AS total 
FROM `bk_trx` LEFT JOIN books ON bk_trx.`book_no_perolehan` = books.`book_no_perolehan` 
WHERE bk_trx.`dateout` LIKE '%2019%' 
AND `dateout` LIKE '01/%' 
AND bk_trx.`std_class` = '5' 
GROUP BY books.`book_class` , bk_trx.`std_class` 

IN Book Trx 表

SELECT `trx_id`, `std_class`, `std_class_name`, `book_no_perolehan`, `dateout` 
FROM `bk_trx`

book trx 表中的数据:

trx_id,    std_class,  std_class_name,  book_no_perolehan,     dateout

1     ,    5        ,  H             ,  33481            ,     01/12/2019

2     ,    5        ,  B             ,  33491            ,     01/13/2019

IN 书桌

SELECT `book_id`, `book_no_perolehan`, `book_class` 
FROM `books` 

书表中的数据:

book_id , book_no_perolehan , book_class

1       , 33481             , F

2       , 33491             , 800

3       , 33450             , FCL

在 SQL 中查询后:

实际表结果

book class  , Total

800         , 1

50C         , 1

我想这样显示我的结果,如果数据库中没有 FCL 行,但它会在表中显示值 0。

预期表

book class , Total  
800        ,  1  
FCL        ,  0  
50C        ,  1 

标签: sql

解决方案


我认为您只想left join正确使用:

SELECT b.book_class, COUNT(t.book_no_perolehan) AS total 
FROM books b LEFT JOIN
     bk_trx t    
     ON t.`book_no_perolehan` = b.`book_no_perolehan` AND
        t.`dateout` >= '2019-01-01' AND t.dateout < '2020-02-01' AND
        t.`std_class` = '5' 
GROUP BY b.`book_class`;

推荐阅读