как использовать подзапросы для элементов COUNT () и SUM () - PullRequest
1 голос
/ 19 сентября 2019

Я пытаюсь получить список:

StockPart.title   |   QtyAvailable   |   SumOfItemsCost
StockPart.title   |   QtyAvailable   |   SumOfItemsCost
StockPart.title   |   QtyAvailable   |   SumOfItemsCost
StockPart.title   |   QtyAvailable   |   SumOfItemsCost

Пытаюсь объяснить:

  • StockPart.title происходит из таблицы stock_parts
  • QtyAvailable - это число () stock_items этой StockPart (stock_items.status = NULL && stock_items.stock_part_id = stock_part.id)
  • SumOfItemsCost равно QtyAvailable * shipments.item_cost

Моя структура таблицы

stock_parts
  - id
  - title

stock_items
  - id
  - stock_part_id
  - shipment_id

shipments
  - item_cost

Так что я немного растерялся, как это сделать.Я пытаюсь что-то вроде этого:

SELECT
  stock_parts.id,
  stock_parts.title,
  (SELECT COUNT(*) FROM stock_items WHERE
                    stock_items.stock_part_id = stock_parts.id
                    AND stock_items.status = NULL)
                    AS qty_available
FROM
  stock_parts,
  stock_items

Кто-нибудь может помочь?

Ответы [ 2 ]

2 голосов
/ 19 сентября 2019

, если вы хотите сгруппировать:

SELECT
    stock_parts.title,
    COUNT(*),
    SUM(shipments.item_cost) 
FROM
    stock_items
INNER JOIN
    stock_parts
ON
    stock_items.stock_part_id = stock_parts.id
INNER JOIN
    shipments
ON
    shipments.id = stock_items.shipment_id
GROUP BY stock_parts.id
2 голосов
/ 19 сентября 2019

Это то, что вы могли бы сделать:

SELECT
    stock_parts.title,
    (
        SELECT COUNT(*) 
        FROM stock_items 
        WHERE stock_items.id = stckItm.id
    ),
    (
        SELECT 
            SUM(item_cost) 
        FROM stock_items 
        INNER JOIN shipments ON shipments.id = stock_items.shipment_id 
        WHERE stock_items.id = stckItm.id
    )
FROM
    stock_items stckItm
inner join
    stock_parts
ON
    stckItm.stock_part_id = stock_parts.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...