Eleganter Lösung für rechnen in MYSQL gesucht

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

  • Eleganter Lösung für rechnen in MYSQL gesucht

    Hallo Ihr Nachtschwärmer,

    im Moment stehe ich wieder mal etwas auf dem Schlauch. Mit folgender Datenbankabfrage errechne ich offene Rechnungen. Läuft auch ganz gut, sieht mir nur zu gigantisch aus

    Gibt es für den Query eine elegantere, performantere Lösung und wie bekomme ich es hin das Umsätze sum(summe) = 0 garnicht ausgegeben werden?


    ...und gute Nacht
    Zuletzt geändert von mr_apollon; 28.08.2011, 17:07.

  • #2
    und wie bekomme ich es hin das Umsätze sum(summe) = 0 garnicht ausgegeben werden?
    ...Bedingung in deine WHERE Bedingung packen (kleines tut dazu: http://www.techonthenet.com/sql/sum.php) oder evtl. IIF verwenden!

    mfg streuner
    Zuletzt geändert von streuner; 29.07.2011, 08:04.
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
    der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

    "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

    Kommentar


    • #3
      Okay mit dem Where war klar war nur in der Nacht nicht auf die Idee gekommen das nochmal zu verschachteln.

      Hat jemand eine Idee wie man die ganze Abfrage performanter gestalten kann?
      Zuletzt geändert von mr_apollon; 28.08.2011, 17:07.

      Kommentar


      • #4
        Statt den * die Spaltennamen schreiben, die Du brauchst! Dauert Dir die Abfrage zu lange, oder ist das ne allg. Frage, wie man das performanter machen kann??

        mfg streuner
        Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
        der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

        "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

        Kommentar


        • #5
          Im Moment habe ich nur eine Hand voll Testdaten, wo die Abfrage flott läuft. Irgendwie sieht mir die ganze Sache aber zu übertrieben aus.

          Kommentar


          • #6
            Na ja, du kannst doch auch deine 4 SELECT's die du mit UNION ALL verknüpfst, in 2 umwandeln - du hast das ja jeweils aufgesplittet! Ob das jetzt performanter ist...! Am besten wäre es, du hättest ne große Menge Daten um zu testen. Die Länge deines SQL Statements sagt nicht zwangsläufig was darüber aus, wie effizient gearbeitet wird!

            mfg streuner
            Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
            der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

            "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

            Kommentar


            • #7
              hmmm, ich glaube ich kann es nicht zusammenfassen, da ich ja jeweils das konto im datensatz brauche was > 9999 ist. sonst müsste ich über ein subselect wieder schauen ob konto oder gegenkonto >9999 ist

              Kommentar


              • #8
                Was bedeutet diese Zahl überhaupt?

                Kommentar


                • #9
                  durch die 2 spalten konto und gegenkonto wird eine buchung abgebildet. entweder ist es ein geschäftsvorgang (zahl < 10000) oder ein kunde (zahl > 9999). die kundennummer kann in abhängigkeit des saldo (s oder h) im konto oder im gegenkonto stehen. ich brauche nun die kundennummern mit zugehöriger rechnungsnummer die noch offen sind.

                  Kommentar


                  • #10
                    Das ist Pfusch. Ein Zahlenbereich darf keine Bedeutung haben. Leg eine zusätzliche Spalte an, die die Art des Datensatzes enthält (also ob es ein Geschäftsvorgang oder ein Kunde ist). Danach könnte man auch wunderbar gruppieren und die Abfrage sehr stark vereinfachen.
                    Zuletzt geändert von h3ll; 29.07.2011, 10:10.

                    Kommentar


                    • #11
                      Ich habe die Query nur überflogen, aber du selektierst immer über der gleichen Tabelle. Kann mir nicht vorstellen, dass das nicht auch mit geeigneten OR-Verknüpfungen zu machen ist. Dann wären die UNIONS schon mal weg - ob das schneller geht, verrät EXPLAIN.
                      Vielleicht kann man dann auch noch die beiden äußeren SELECTs eliminieren. Die hab ich mir jetzt noch nicht angesehen.

                      Kommentar

                      Lädt...
                      X