如果我的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
答案 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`;