2017-02-02 1 views
1

Ich bin versuchen Menge in 4 Tabellen zusammenzufassen, und ich möchte das Ergebnis wie das, was auf dem Bild sein: Beispiel: Menge von item1 in initial = 10 + Menge von item1 in Kauf = 10 so ist die Summe des Artikels in zwei obigen Tabellen 20. jetzt möchte ich das gleiche item1 in den anderen zu Tabellen summieren. das ist: 15 und das Ergebnis sollte sein: 20-15 = 5 ich versuchte sum:Summe in 4 Tabelle MYSQL

select productName, 
sum(initial.quantity)+sum(buy.quantity) as total1 
- 
sum(sale.quantity)+sum(free.quantity) as total2 
from products 
group by productName 

enter image description here

Antwort

0

Keine Notwendigkeit für einen GROUP BY nur JOIN Ihre Tabellen und verwenden Sie Mathe.

SELECT i.productid, 
(i.quantity + b.quantity) - (s.quantity + f.quantity) AS quantity 
FROM initial i 
INNER JOIN buy b ON i."product id" = b."product id" 
INNER JOIN sale s ON i."product id" = s."product id" 
INNER JOIN free f ON i."product id" = f."product id" 
+0

hallo ! mit Gruppe von ich habe falsches Ergebnis und ohne Gruppe von ich bekam item1 item1 item1 ...... und keine Summe noch –

0

Sie benötigen als eine Spalte

wie (10 + 10) schreiben - (10 + 5)
wenn Sie mehrere Zeit gleiches Produkt alsGROUP BY und SUM Ansonsten entferne es.

select products.PRODUCT_ID, 
    (sum(initial.quantity)+sum(buy.quantity))-(sum(sale.quantity)+sum(free.quantity)) as 
    from products join initial on products.product_id=initial.product_id 
    join free on products.product_id=free.product_id 
    join buy on products.product_id=buy.product_id 
    join sale on products.product_id=sale.product_id 
    group by products.PRODUCT_ID 
+0

like (10 + 10) - (10 + 5) ja das ist was ich will genau .. aber ich tat nicht das richtige Ergebnis von Ihrem Examen –

+0

@AntiAtlasDev können Sie jetzt ausführen? –

+0

Hallo! mit der Gruppe von ich habe falsches Ergebnis und ohne Gruppe von ich habe item1 item1 item1 ...... und noch keine Summe –

1

Wenn Ihre Tabellen müssen nicht Werte für alle Elemente in allen Tabellen (dh hat Anfangswert, aber noch keine Umsätze), wäre es sicherer sein, es so zu tun:

select p.productName, sum(q.iquantity)+sum(q.bquantity) - sum(q.squantity) - sum(q.fquantity) as 'quantity' 
from products p 
    join (
    select product_id, quantity as iquantity, 0 as bquantity, 0 as squantity, 0 as fquantity 
    from initial 
    union 
    select product_id, 0, quantity, 0, 0 
    from buy 
    union 
    select product_id, 0, 0, quantity, 0 
    from sale 
    union 
    select product_id, 0, 0, 0, quantity 
    from free 
) as q on q.product_id = p.product_id 
group by p.productName 
+0

Ich habe richtige Produkte Namen aber falschen Wert .. es ist in der Nähe von was ich will, aber immer noch die falsche Gesamt –

+0

Union funktioniert, aber ich weiß nicht wie? –

+0

Ich stimme dies, bis ich die richtige Antwort habe, um es zu akzeptieren –