Problem mit Abfrage erstellung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Abfrage erstellung

    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...

  • #2
    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
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      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?

      Kommentar


      • #4
        Ja, man kann mit der SQL auch rechnen.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          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...
          Zuletzt geändert von Pebbles123; 21.02.2010, 17:45.

          Kommentar


          • #6
            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:

            Code:
            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`
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar

            Lädt...
            X