简体   繁体   English

来自三个表的mysql查询

[英]mysql query from three tables

I'm using this query 我正在使用此查询

SELECT
orders_list.nr_comanda_orders AS Comanda,
SUM(orders_list.cantitate) AS Total, 
SUM(orders_list.qty_to_add) AS InStoc,
COUNT(entries_list.id) AS Picked
FROM orders_list 
LEFT JOIN entries_list ON (entries_list.file_id = orders_list.id AND entries_list.orders_list_id = orders_list.nr_comanda_orders)
GROUP BY orders_list.nr_comanda_orders
ORDER BY orders_list.nr_comanda_orders DESC

which has this result 有这个结果

Comanda    | Total | InStoc | Picked
-----------|----------------|--------
 AAY280838 |   64  | 6      |   0
 AAY280837 |   50  | 8      |   0
 AAY280836 |   89  | 8      |   0

and a second query 和第二个查询

SELECT
entries_list.orders_list_id AS Comanda,
SUM(orders_list.cantitate) AS Total, 
SUM(orders_list.qty_to_add) AS InStoc,
COUNT(entries_list.id) AS Picked
FROM  entries_list 
LEFT JOIN orders_list ON (entries_list.file_id = orders_list.id AND entries_list.orders_list_id = orders_list.nr_comanda_orders) 
LEFT JOIN orders_uploaded ON orders_list.file_id = orders_uploaded.id
GROUP BY 
entries_list.orders_list_id  
ORDER BY 
entries_list.orders_list_id DESC,
orders_uploaded.id_routing DESC, 
orders_uploaded.upload_date DESC, 
orders_uploaded.progress ASC

which has this result: 结果如下:

Comanda    | Total   | InStoc | Picked
-----------|------------------|--------
 AAY280838 |   NULL  | NULL   |   55
 AAY280837 |   NULL  | NULL   |   39
 AAY280836 |   NULL  | NULL   |   76

Could you please help me with the query so I can get this result? 您能帮我查询一下,以便我得到这个结果吗?

Comanda    | Total | InStoc | Picked
-----------|----------------|--------
 AAY280838 |   64  | 6      |   55
 AAY280837 |   50  | 8      |   39
 AAY280836 |   89  | 8      |   76

Thanks in advance. 提前致谢。

SELECT t1.Comanda,t1.Total,t1.InStoc,t2.Picked
(
SELECT
orders_list.nr_comanda_orders AS Comanda,
SUM(orders_list.cantitate) AS Total, 
SUM(orders_list.qty_to_add) AS InStoc,

FROM orders_list 
LEFT JOIN entries_list ON (entries_list.file_id = orders_list.id AND entries_list.orders_list_id = orders_list.nr_comanda_orders)
GROUP BY orders_list.nr_comanda_orders
) t1

LEFT JOIN

(

SELECT
entries_list.orders_list_id AS Comanda,
COUNT(entries_list.id) AS Picked
FROM  entries_list 
LEFT JOIN orders_list ON (entries_list.file_id = orders_list.id AND entries_list.orders_list_id = orders_list.nr_comanda_orders) 
LEFT JOIN orders_uploaded ON orders_list.file_id = orders_uploaded.id
GROUP BY 
entries_list.orders_list_id  

) t2
ON t1.Comanda = t2.Comanda

Lazy, slow performing solution: 延迟执行缓慢的解决方案:

SELECT 
  first.Comanda AS Comanda,
  first.Total AS Total,
  first.InStoc AS InStoc
  second.Picked AS Picked
FROM (
    -- your first query here
  ) AS first
  LEFT JOIN (
    -- your second query here
  ) AS second
  ON first.Comanda=second.Comanda
ORDER BY
  -- whatever

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM