1

我有 3 张桌子:

  • 订单:
    • 订单编号
    • 购买日期
    • ...
  • 订单产品:
    • orders_products_id
    • 订单编号
    • products_id
    • 产品名称
    • 产品数量
    • ...
  • 产品仓库:
    • products_id
    • 仓库id
    • product_quantity_in_warehouse

现在我想要一个包含以下信息的表格:

  • 当前的日期
  • products_id
  • 产品名称
  • 仓库id
  • current_quantity_in_warehouse
  • 昨天卖了

到目前为止,我有以下内容:

SELECT DISTINCT  CURRENT_DATE AS `date`
                 orpr.products_id AS products_id
                 orpr.products_name AS products_name
                 pwq.warehouses_id AS warehouses_id
                 pwq.products_quantity AS current_quantity_in_warehouse
                 (  SELECT SUM(orpr.products_quantity)
                    FROM `products_warehouses` wpq
                    INNER JOIN `orders_products` orpr ON pwq.products_id = orpr.products_id
                    INNER JOIN `orders` or ON orpr.orders_id = or.orders_id
                    WHERE pwq.products_id = ??
                    AND   pwq.warehouses_id = ?? ) AS sold_yeserday
FROM             `orders_products` orpr
INNER JOIN       `orders` or ON orpr.orders_id = or.orders_id
INNER JOIN       `products_warehouses pwq ON pwq.products_id = orpr.products_id;

我想要的是 ?? 的 products_id 和 warehouses_id 与结果的每一行类似。

如果有人有一个更简单的例子来说明如何在选择中使用选择(内部选择使用其中的选择条件ID,当然这会改变每一行),只要我能重现示例以解决我的问题。

提前致谢,

格雷茨,凯文 C

4

2 回答 2

0
SELECT
    CURRENT_DATE AS `date`,
    orpr.products_id AS products_id,
    orpr.products_name AS products_name,
    pwq.warehouses_id AS warehouses_id,
    pwq.products_quantity AS current_quantity_in_warehouse,
    SUM(orpr.products_quantity) AS sold_yeserday
FROM             
    orders_products orpr
    INNER JOIN       
    products_warehouses pwq ON pwq.products_id = orpr.products_id;
group by orpr.products_id, pwq.warehouses_id
order by orpr.products_id, pwq.warehouses_id
于 2012-09-19T11:44:22.497 回答
0

您应该提取内部 SELECT 语句并将结果放入表中,您可以在外部选择中加入该表

SELECT SUM(orpr.products_quantity) As 'Sold_yesterday', pwd.products_id, pwd.warehouses_id
INTO #tempTable
FROM `products_warehouses` wpq
INNER JOIN `orders_products` orpr ON pwq.products_id = orpr.products_id
INNER JOIN `orders` or ON orpr.orders_id = or.orders_id


SELECT DISTINCT  CURRENT_DATE AS `date`
orpr.products_id AS products_id
orpr.products_name AS products_name
pwq.warehouses_id AS warehouses_id
pwq.products_quantity AS current_quantity_in_warehouse                
FROM             `orders_products` orpr
INNER JOIN       `orders` or ON orpr.orders_id = or.orders_id
INNER JOIN       `products_warehouses pwq ON pwq.products_id = orpr.products_id;
INNER JOIN       '#tempTable' tt On tt.products_id = pwd.products_id AND tt.warehouses_id = pwd.warehouses_id
于 2012-09-19T11:38:04.547 回答