2017-09-25 1 views
0

Ich versuche, Lager in SQL zu berechnen. Ich habe 4 Tabelle Produkt, Größe, Kauf und Verkauf. Produkttabelle istBerechnen Lager verfügbar durch Hinzufügen von Spalte auf der Basisfarbe

+----+------------------+ 
| id | product_name  | 
+----+------------------+ 
| 1 | apple   | 
|----|------------------| 
| 2 |banana   | 
|----|------------------| 
| 3 |mango    | 
+----+------------------+ 

Jetzt Farbtabelle

+----+------------------+ 
| id | color_name  | 
+----+------------------+ 
| 1 | dark   | 
|----|------------------| 
| 2 | light   | 
+----|------------------+ 

Kauf Tabelle

ist
+-------+-------------+ 
| id | quantity |color 
+-------+-------------+ 
| 1 | 15  |dark 
+-------+-------------+ 
| 1 | 10  |light 
+-------+-------------+ 
| 2 | 5   |dark 
+-------+-------------+ 
| 3 | 25  |light 
+-------+-------------+ 

und Verkaufstisch ist

+-------+-------------+ 
| id | quantity |color 
+-------+-------------+ 
| 1 | 5   |dark 
+-------+-------------+ 
| 1 | 5   |light 
+-------+-------------+ 
| 2 | 5   |dark 
+-------+-------------+ 
| 3 | 5   |light 
+-------+-------------+ 

Kauf und Verkaufstisch haben Fremdschlüssel-ID Referenzen ID der Produkttabelle. Jetzt versuche ich, Lager verfügbar dh Differenz von Kauf- und Verkauf im folgende Format auf der Grundlage der Farbe zu

+----+------------------+-------------+ 
| id | product_name  | quantity |color 
+----+------------------+-------------+ 
| 1 | apple   | 10  |dark 
|----|------------------|-------------| 
| 1 | apple   | 5  |light 
|----|------------------|-------------| 
| 2 |banana   | 0  |dark 
|----|------------------|-------------| 
| 3 |mango    | 20  |light 
+----+------------------+-------------+ 

Ich habe folgende Skript zu berechnen, die ich versucht habe:

SELECT p.id, 
     p.Name, 
     Purchase.purchaseQty - sales.salseQty AS totalQty 

FROM Product p 
    OUTER APPLY (
     SELECT purchase.id, 
       SUM(purchase.quantity) purchaseQty 

     FROM purchase 
     WHERE purchase.id = p.id 
     GROUP BY 
      purchase.id 
) Purchase 
    OUTER APPLY (
     SELECT sales.id, 
       SUM(sales.quantity) salseQty 
     FROM sales 
     WHERE sales.id = p.id 
     GROUP BY 
      sales.id 
) sales 
; 
+1

Farbe ist eine Spalte in Kauf & Verkauf Tabellen? oder du gerade erwähnt? Wenn es eine Spalte ist, benötigen Sie eine Fremdschlüsselbeziehung mit der Farbtabelle. –

+1

was hast du probiert ?? –

+0

@YogeshSharma mir jemand mit dieser Lösung SELECT p.id helfen, p.Name, Purchase.purchaseQty-sales.salseQty als totalQty aus dem Produkt p OUTER APPLY ( SELECT purchase.id, SUM (purchase.quantity) purchaseQty FROM kaufen, wo purchase.id p.id = GROUP BY purchase.id ) Kauf OUTER APPLY ( SELECT sales.id, SUM (sales.quantity) salseQty FROM Sales wo sales.id p.id = GROUP BY sales.id ) Umsatz –

Antwort

2

Dies sollte lösen Das Problem:

select P.id, Pr.product_name, 
     case when S.quantity is null then P.quantity 
      else P.quantity - S.quantity end as quantity, 
     P.color from purchase as P 
left join sales AS S on (P.id = S.id and P.color = S.color) 
join product AS Pr on Pr.id = P.id 
+0

Diese Abfrage wird nicht die verfügbare Menge angezeigt, wenn der Umsatz wird nicht hinzugefügt –

+0

Ich fügte Verkäufe hinzu :) –

+0

was, wenn Verkaufstabelle ist jetzt leer, Kauf Tabelle sollte verfügbar sein Menge –

Verwandte Themen