Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Problem mit Abfrage erstellung [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Problem mit Abfrage erstellung


 
Pebbles123
21-02-2010, 16:41 
 
Hi

ich suche gerade einen Weg wie ich eine Berechnung am schnellsten mit einer SQL Abfrage lösen kann statt einer langsamen Berechnung...

Ich habe 3 Tabellen:
1. Tabelle beinhaltet die Tiere mit Tierart und BesitzerIndex
2. Tabelle behinhaltet die Tierarten und was diese pro Tag fressen (in kg)
3. Tabelle behinaltet die verschiedenen Futtersorten je Tierart mit unterschiedlichen Futtermengen und deren Preis.

bsp:
Tabelle 1:
User=1, Tierart 1
User=1, Tierart 1
User=1, Tierart 2
User=1, Tierart 3
User=1, Tierart 3

Tabelle 2:
Tierart1, 5kg
Tierart2, 2kg
Tierart3, 10kg

Tabelle 1
Futter1, Tierart1, 5kg, 4EUR
Futter2, Tierart1, 10kg, 9EUR
Futter3, Tierart2, 2kg, 2EUR
Futter4, Tierart2, 4kg, 5EUR
Futter5, Tierart3, 10kg, 9EUR

Jetzt möchte ich ausrechnen was User1 pro Tag an Futterkosten hat. Spontan würde ich jetzt eine Schleife mache über alle Tiere des Users 1, pro Tier mir raussuchen was es an Futter pro Tag braucht, dann was das jeweilige Futter kostet und das dann zusammenaddieren. Aber gibts hierfür nicht eine SQL Abfrage die das schon vielleicht für mich tut oder eventuell mit einige Schritte zusammenfassen kann? Bisher hab ich nur mit Abfragen auf eine Tabelle gearbeitet und keine Erfahrung mit übergreifenden Abfragen...

 
AmicaNoctis
21-02-2010, 16:54 
 
Hallo,

schau dir mal im MySQL-Handbuch die JOIN Syntax an und die Beispiele dazu. Dann bekommst du sicher eine Idee, wie du das für deine Tabellen anwenden kannst.

Gruß,

Amica

 
Pebbles123
21-02-2010, 16:57 
 
Danke für den Tip, gibts auch was das er automatisch sachen zusammenzählt und addiert? zb User hat 3 Katzen und dauers ergibt sich 3x3EUR kosten?

 
AmicaNoctis
21-02-2010, 17:00 
 
Ja, man kann mit der SQL auch rechnen.

 
Pebbles123
21-02-2010, 18:41 
 
kann mir einer einen kurzen Tip geben wie ich die Abfrage aufbauen muss, ich hab jetzt einige Varianten durch, aber ich schaff irgendwie immer nur 2 Tabellen miteinander zu verknüpfen und wenn ich versuch die 3. mit reinzubringen krieg ich nen Knoten im Gehirn. Ich bin schonmal soweit, daß er mir die Tieranzahl für einen User je Tierart berechnet:

SELECT UserIndex, AnimalTyp, COUNT(AnimalTyp) anzahl FROM useranimals WHERE UserIndex=1 GROUP BY AnimalTyp

Wie bekomme ich jetzt da die dazugehörige Futtersorte und dessn preis mit rein? Oder geht das nicht? Es muss ja jetzt in der einen Tabelle geschaut werden wieviel kg das Tier benötigt und dann in der 3. Tabelle die dazugehörige Futterart mit Preis ausgewählt werden... mir würde es auch reichen wenn erstmal nur das in der Tabelle rauskäme, die letztliche Berechnung Anzahl*Preis kann ich dann ja auch in einer Schleife machen...

 
AmicaNoctis
21-02-2010, 20:14 
 
Was ich nicht verstehe: Warum steht die Menge in Tabelle 2 und Tabelle 3? Ich würde es ja so machen:

Tabelle Tierart: ID, Name, Futtereinheiten (pro Tag)
Tabelle Halter: ID, Name
Tabelle Futter: ID, Name, Tierart-ID, Preis (pro Futtereinheit in Euro)
Tabelle Haltung: ID, Halter-ID, Tierart-ID, Anzahl (Tiere)

Wenn ich jetzt wissen will, wieviel ein Halter pro Tag an Futterkosten ausgeben muss, könnte ich es so schreiben:


select
`Halter`.`Name`,
`Tierart`.`Name`,
`Futter`.`Name`,
`Futter`.`Preis` * `Tierart`.`Futtereinheiten` * `Haltung`.`Anzahl` as `PreisProTag`
from `Haltung`
join `Halter` on `Halter`.`ID` = `Haltung`.`HalterID`
join `Tierart` on `Tierart`.`ID` = `Haltung`.`TierartID`
join `Futter` on `Futter`.`TierartID` = `Tierart`.`ID`

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:36 Uhr.