Я пытаюсь получить оставшееся количество книг следующим способом
сток = всего + (получено-выдано);
Таблица book_qnt
- списки книг Quantiy
id | book | qnt
=======================
1 | 1 | 20
2 | 2 | 12
Таблица book
- списки Книг
id | ttl
===========
1 | Social Experiment
2 | Evolution of Culture
Таблица book_trns
- списки книжных переводов
id | bk | std | iss | rcv | dte
==========================================
1 | 2 | 1 | 6 | 0 | 2019-04-11
2 | 2 | 2 | 4 | 0 | 2019-04-05
Это хорошо только для тех книг, которые имеют и получают ценности.
На языке БД отображаются результаты тех книг, которые book_trans.rcv
и book_trans.iss
не NULL
SELECT
book.id AS book,
book_qnt.qnt+((SUM(book_trans.rcv))-(SUM(book_trans.iss))) AS stock,
Результат
book| stock
===========
1 | NULL
2 | 2
Теперь я пытаюсь получить результат следующим образом: если book_trans.rcv
и book_trans.iss
равны NULL
, то он должен получить всего qnt
с book_qnt
Желаемый результат
book| stock
===========
1 | 20 // id 1's book_trans.rcv and book_trans.iss is NULL, so it should show total qnt
2 | 2 // id 2's book_trans.rcv and book_trans.iss is not NULL, so it is calculating
Что я делаю , если book_trans.rcv
и book_trans.iss
строка имеет значение Null, тогда присвойте значение как 0.
SELECT
book.id AS book,
book_qnt.qnt+((IFNULL(0, SUM(book_trans.rcv)))-(IFNULL(0, SUM(book_trans.iss)))) AS stock,
Но Результат (расчет не работает)
book| qnt
===========
1 | 20
2 | 12
Полный MySQL
SELECT
book_qnt.qnt+((IFNULL(0, SUM(book_trans.rcv)))-(IFNULL(0, SUM(book_trans.iss)))) AS stock,
lib_bk.id,
lib_bk.ttl
FROM
book
JOIN
book_qnt ON book_qnt.book=book.id
LEFT JOIN
book_trans ON book_trans.bk=book.id
GROUP BY book.id