Как использовать синтаксис соединения с group by для нескольких таблиц - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть 3 таблицы, настройка строк, элементы и перемещение Что я ищу, так это то, что мне нужно выбрать из таблиц: все строки в корректирующей строке с описанием из таблицы позиций с указанным количеством, которое входит в группу sum (qty) -sum (qtyout) таблицы itemmovement по itemid и warehouseid.

Настройка

itemid  warehouseid adjustbyquantity

1          2           5
1          1           3
2          2           4
3          1           5

Предметы

Id        description

1         Item 1
2         Item 2
3         Item 3

Перемещение

itemid  warehouseid qtyin   qtyout

1          1         3  
1          1                  2
1          2         3  
1          2                  1
2          2         1

Запрос просмотра

Description warehouseid Onhandqty   Adjustbyqty

Item 1         2          2             5
Item 1         1          1             3
Item 2         2          1             4
Item 3         1          0             5

Я пытаюсь использовать эти 2 способа, но оба они не дают мне правильный результат

SELECT sum(itemv.qtyin) sum(itemv.qtyout),adjo.warehouseid,adjo.itemid,
adjo.adjustbyquantity,itm.description

                        FROM adjustoutcopy adjo

                        LEFT JOIN  itemmovement AS itemv
                            ON  adjo.itemid=itemv.itemid AND 
                                adjo.warehouseid=itemv.warehouseid
                        LEFT JOIN  items AS itm
                            ON adjo.itemid=itm.Id



                        group by itemv.itemid,itemv.warehouseid 
                        ORDER BY adjo.Id DESC

Если itemid не существует в таблице itemmovement, строка не отображается, так как код использует Inner соединения.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Наконец, это было решено, вот код:

   SELECT itm.description,adjst.warehouseid,sumofqty,adjst.quantity

            FROM adjustoutcopy adjst
           LEFT JOIN (
              SELECT itemid,warehouseid,sum(qtyin)-sum(qtyout) AS sumofqty
              FROM itemmovement
              GROUP BY itemid,warehouseid
            ) s ON (adjst.codeid = s.itemid) AND
                    (adjst.warehouseid = s.warehouseid)
            LEFT JOIN items AS itm
                ON adjst.codeid=itm.Id

Спасибо всем

0 голосов
/ 07 ноября 2018

Поскольку вы GROUP BY столбцы в таблице itemv, если в этой таблице нет записей, группа не существует.

...