sql - 在表中显示值,即使查询返回无
问题描述
如果表书 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
解决方案
我认为您只想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`;
推荐阅读
- javascript - 是否可以使用一个简单的函数来处理多个 useState 挂钩?
- r - 根据条件对列求和
- c# - 单击按钮从 asp .net MVC Web 应用程序打开 IOS 应用程序
- html - 如何定位 html 元素类名称而不是元素?
- python - 使用 mock.patch 模拟函数内部的变量
- html - 图像大小未重新调整以适应 flexbox
- javascript - Discord 音乐机器人由于某种原因停止工作
- c++ - 使用模板时:错误:没有匹配的构造函数用于初始化
- windows - 在 Windows 上从 Apache CGI 运行 gswin64c
- python - ValueError:输入 0 与层 lstm_15 不兼容:预期 ndim=3,发现 ndim=2