在表中显示值,即使查询也不返回

时间:2019-01-23 14:18:18

标签: php sql database mysqli

如果我的php / html表中的表book trx中没有计数的行,我想显示值0。但是,当我尝试使用SQL查询时,它仅显示在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` 

在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

在书桌里

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 

1 个答案:

答案 0 :(得分:0)

我认为您只想正确使用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`;