красноречивый запрос для получения разницы двух столбцов из другой таблицы - PullRequest
0 голосов
/ 06 сентября 2018

Я должен показать оставшееся количество книг, используя красноречивый запрос. Я могу получить общее количество купленных книг из этой таблицы

ordered_books
BOOKCODE[varchar(10)]   QUNATITY[varchar(6)]
111                         25
423                         15
201                         10
111                         10
423                         10
201                         5
158                         12

Сначала я должен суммировать общее количество книг для каждого кода книги. Затем из другой таблицы я должен вычислить разницу.

books_out
DISTRIBUTOR[varchar(50)]    BOOKCODE[varchar(10)]           QUNATITY[varchar(6)]    
25                              158                             2
35                              201                             5
45                              158                             5
55                              111                             10
35                              111                             5
15                              423                             1
25                              423                             10

Опять же, из этой таблицы я должен вычислить общее количество книг, взятых дистрибьюторами, затем я могу получить фактическое количество книг в подарок. Как мне написать красноречивый запрос для этого сценария?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Что касается вашего сценария, я думаю, что вам нужен этот запрос, пожалуйста попробуйте его и прокомментируйте, был ли он полезным или нет.

$countBooks = DB::select(DB::Raw(" SELECT A.TOTAL, IFNULL(B.SOLD,0) AS SOLD, (A.TOTAL - IFNULL(B.SOLD,0)) AS REMAINING FROM 
                                                (
                                                    select t1.BookID, SUM(t1.QUNATITY) AS TOTAL from ordered_books t1 
                                                    GROUP BY t1.BookID) A 
                                                LEFT JOIN 
                                                (
                                                    SELECT BookCode, IFNULL(SUM(Quantity),0) AS SOLD FROM books_outs GROUP BY BookCode) B 
                                                ON A.BookID = B.BookCode
                                    "));

dump($countBooks);

Кроме того, лучше отображать названия книг, а не код.Это будет более удобным для пользователя.Спасибо !!!

0 голосов
/ 06 сентября 2018

Try to use Raw query like this
==================================

$data=DB::select(DB::Raw("select t1.BOOKCODE,(total-selled) as available from (select BOOKCODE, SUM(QUNATITY) as total FROM `ordered_books` group by `BOOKCODE`) as t1,(SELECT BOOKCODE,SUM(QUNATITY) as selled FROM `books_out` group by `BOOKCODE`) as t2 where t1.BOOKCODE=t2.`BOOKCODE`"));
        
print_r($data);

//To get total books for each of the book code
SELECT BOOKCODE,SUM(QUNATITY) FROM `ordered_books` group by `BOOKCODE`

//To get total books_out for each of the book code
SELECT BOOKCODE,SUM(QUNATITY) FROM `books_out` group by `BOOKCODE`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...