Schrift
[thread]8364[/thread]

gesamtgewicht



<< >> 4 Einträge, 1 Seite
kale_1990
 2006-09-27 11:59
#70305 #70305
User since
2006-09-12
104 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich hab folgendes Problem, und zwar:

Es besteht ein Produkt aus vielen andern Produkten. Die Liste aus der ein Produkt besteht
ist in der Tabelle "STAMM"
und die einzelnen Produkten sind in der Tabelle "TEIL" zu finden.
Es kann auch vorkommen das "unterprodukte" von dem fertigen Produkt nochmals aus verschiedenen
Produkten besteht. Das heißt es kann eine tief verschachtelte hierarchie sein.
Die stücklistenhierarchie bekomm ich mit folgender SQL-Abfrage aus der Datenbank:

SELECT teilnr(STAMM),nr.von unterteil,bennenung,level FROM STAMM,TEIL WHERE nr.von unterteil=teilnr.aus(TEIL)
CONNECT BY PRIOR nr.von unterteil = teilnr(STAMM) START WITH teilnr(STAMM) = teilnr(TEIL)

nun zum eigentlichen problem:

jeden teil hat in der tabelle TEIL ein gewicht oder auch nicht und nun soll das gesamtgewicht ermittelt werden
zusätzlich steht in der tabelle STAMM wieoft das jeweilige teil vorhanden ist....das heißt das das teil
damit multipliziert werden muss.....hat jemand eine idee wie ich das endgweicht des endprodukts ermitteln kann?

bitte um antwort
THERE'S MORE THAN ONE WAY TO DO IT - TMTOWTDI

EASY THINGS SHOULD BE EASY - HARD THINGS SHOULD BE POSSIBLE
esskar
 2006-09-27 12:46
#70306 #70306
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
docsnyder
 2006-09-27 16:24
#70307 #70307
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@kale_1990

Von der Logik her sieht der Algorithmus, den Du suchst, etwa so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sub calcWeight {
my($item) = @_;
my($weight) = 0;
my($part);

$numParts = scalar(@parts = getParts($item));

if ( $numParts == 0 ) {
return(getWeight($item));
}
elsif ( $numParts == 1 ) {
return(getWeight($parts[0]));
}
else {
for $part ( @parts ) {
$weight += calcWeight($part);
}
}

return($weight);
}


getParts() musst Du dabei so implementieren, daß die Funktion zu einem gegebenen Teil die Liste der Teile liefert, aus denen das Teil besteht (wenn ein Bestandteil 5 mal das gleiche Teil ist, sollten auch 5 Elemente in der Liste sein). getWeight() liefert das Gewicht eines Teiles. "Wie" Du diese 2 Funktionen implementierst, musst Du wissen, sollte aber nicht so schwer sein. Es geht in meinem Beispiel nur um die Ablauflogik.

Gruß, Doc
kale_1990
 2006-09-27 16:43
#70308 #70308
User since
2006-09-12
104 Artikel
BenutzerIn
[default_avatar]
ok werde es versuchen....danke für die antworten!
THERE'S MORE THAN ONE WAY TO DO IT - TMTOWTDI

EASY THINGS SHOULD BE EASY - HARD THINGS SHOULD BE POSSIBLE
<< >> 4 Einträge, 1 Seite



View all threads created 2006-09-27 11:59.