2016-07-25 18 views
3

Ich möchte die Ergebnisse für jede prod_id in diesen 2 Abfragen subtrahieren.So subtrahieren Sie 2 Abfragen mit mehreren Zeilen in MySQL

SELECT prod_id, prod_name, SUM(quantity) 
FROM purchasesdetails 
LEFT JOIN products ON (products._id=purchasesdetails.prod_id) 
GROUP BY prod_id 

Minus

SELECT prod_id, prod_name, SUM(quantity) 
FROM notedetails 
LEFT JOIN products 
ON(notedetails.prod_id=products._id) 
GROUP BY prod_id 

So ist das Endergebnis

|prod_name|SUM1-SUM2| 

prod_name in der Produkttabelle ist. Diese

ist der Ausgang der ersten Abfrage

prod_id | prod_name | SUM(quantity) 
176  | ANTIPIRINA | 21 
177  | BOMBAY  | 22 

Dies ist der Ausgang der zweiten Abfrage

prod_id | prod_name | SUM(quantity) 
176  | ANTIPIRINA | 10 
177  | BOMBAY  | 15 

Dies ist die gewünschte Ausgabe

prod_id | prod_name | sum1-sum2 
176  | ANTIPIRINA | 11 
177  | BOMBAY  | 7 

Dank!

+0

zeigen einige Beispieldaten und gewünschtes Ergebnis bitte. – Blank

+0

Ich möchte den Vorgang für jede Zeile (Produkt) machen – Padiller

Antwort

3
SELECT prod_id, prod_name, SUM(quantity) 
FROM purchasesdetails 
LEFT JOIN products ON (products._id=purchasesdetails.prod_id) 
GROUP BY prod_id where prod_in not in SELECT prod_id 
FROM notedetails 
LEFT JOIN products 
ON(notedetails.prod_id=products._id) 
GROUP BY prod_id 

U kann nicht in Klausel verwenden.

+0

Ich möchte den Vorgang für jede Zeile (Produkt) – Padiller

+0

Diese Operation macht, was Sie fordern - es führt die Berechnung für jede Zeile, wo prod_id in den beiden Tabellen übereinstimmen . –

0

Für diese beiden Unterabfrage, können Sie es wie folgt tun:

SELECT 
    T1.prod_id, T1.prod_name, SUM(T1.quantity) AS `sum1-sum2` 
FROM (
    SELECT prod_id, prod_name, SUM(quantity) AS quantity 
    FROM purchasesdetails 
    LEFT JOIN products ON (products._id=purchasesdetails.prod_id) 
    GROUP BY prod_id 
    UNION 
    SELECT prod_id, prod_name, 0 - SUM(quantity) AS quantity 
    FROM notedetails 
    LEFT JOIN products 
    ON(notedetails.prod_id=products._id) 
    GROUP BY prod_id 
) T1 
GROUP BY T1.prod_id, T1.prod_name 

Wenn Ihre Tabelle products Haupttabelle ist, können Sie auch es wie folgt tun:

SELECT n.prod_id, n.prod_name, SUM(p.quantity - n.quantity) AS quantity 
FROM products 
LEFT JOIN notedetails n 
ON products._id = n.prod_id 
LEFT JOIN purchasesdetails p 
ON p.prod_id = products._id 
GROUP BY products._id 
+0

Das hat funktioniert! Vielen Dank. – Padiller

Verwandte Themen