2010-11-25 5 views
1

Ich entwickle eine Software, die den Benutzern die Ersatzteile zeigt, die mit verschiedenen Kriterien gesucht werden.Wie bekommt man die Summe aus der verbundenen Tabelle B mit mehreren Ergebnissen gegen eine Zeile in der Tabelle A?

Ersatzteile sind in einer Tabelle (eigentlich eine flache Stücklistenstruktur) und Lagermengen in einer anderen. Lagermengen sind ein bisschen problematisch, da es 0 bis 5 verschiedene Positionen (Reihen) für 1 Ersatzteil und unterschiedliche Menge an jedem Ort (Reihe) geben kann. Dies bedeutet, dass die Gesamtbestandsmenge von allen verschiedenen Positionen (Zeilen) SUMmed sein muss.

Lassen Sie sein, dass Ersatzteile in der Tabelle sind Ersatzteile und Bestandsmengen in stockQ. Join wird von ITEMID gemacht, das ist der Ersatzteilschlüssel in beiden Tabellen.

Wie erreiche ich das? Normalerweise führt eine Abfrage zu 50 bis 500 Ersatzteilen. Ich würde nicht für jeden Teil einzeln eine Bestandskontrolle machen wollen.

BEARBEITEN: Falsche Markierung behoben, mysql durch oracle ersetzt.

Antwort

7

Wenn ich richtig verstanden habe, wollen Sie die Gesamtmenge und nicht die Menge der verschiedenen Standorte. Sie können diese Verbindung mit der summierten Menge in stockq erreichen. Ich bin nicht sicher über mysql sintax aber diese Abfrage sollte die Arbeit

select * 
from spareparts S 
join (select ITEMID, sum(quantity) as quantity from stockQ group by ITEMID) as Q 
on S.ITEMID = Q.ITEMID 
+0

Perfekt tun, danke. BTW: Ich habe MySQL falsch markiert, da es die am häufigsten verwendete Datenbank ist, mit der ich arbeite. Der hier in Frage stehende ist Oracle 10g, aber es macht wirklich keinen Unterschied. – heikkim

Verwandte Themen