Показать значение в таблице, даже запрос не возвращает ни одного - PullRequest
0 голосов
/ 23 января 2019

Я хочу отобразить значение 0, если в моей книге php / html нет подсчитанных строк в таблице trx.Но когда я пытаюсь выполнить запрос в SQL, он показывает только те строки, которые имеют значения в книге trx.

SQL QUERY

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 Table

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

Данные в таблице книг 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 

1 Ответ

0 голосов
/ 23 января 2019

Я думаю, вы хотите просто правильно использовать 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`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...