簡體   English   中英

來自三個表的mysql查詢

[英]mysql query from three tables

我正在使用此查詢

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

有這個結果

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

和第二個查詢

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

結果如下:

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

您能幫我查詢一下,以便我得到這個結果嗎?

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

提前致謝。

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

延遲執行緩慢的解決方案:

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