Announcement

Collapse
No announcement yet.

sum mit mehreren Bedinungen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • sum mit mehreren Bedinungen

    Hallo Leute,
    ich möchte 2 ziemlich komplizierte SQL Anweisungen erstellen, komme aber leider momentan nicht weiter.

    Ich habe beispielweise diese Tabelle hier:

    ID, ID2, Anzahl
    1 , 1 , 2
    1 , 2 , 4
    2 , 1 , 3

    Ich möchte jetzt die Summe bilden zwischen den Eintrag wo ID=1 und ID2=1 mit dem Eintrag wo ID = 2 und ID2 = 1. Und immer so weiter wenn man sich vorstellen würde, dass die Tabelle merere Einträge hätte.
    Ich möchte als explizit bestimmte Zeilen miteinander addieren.
    Ich habe es schon mit
    SELECT sum(anzahl) from catchword where ID = 1 AND ID2r=1
    und weiter komme ich irgendwie nicht, denn eine weitere AND WHERE würde zum Fehler führen.


    Die zweite Abfrage wäre,dass ich sage, dass ich den ersten Eintrag löschen will unter der Bedinung, dass Anzahl>0 ist und unter der Bedinungen, dass die Anzahl des dritten Eintrags >0 ist und so weiter halt. Dabei suche ich immer nach der ID und der IDNr.

    Ich weiß ist nicht so einfach, wäre aber über jede Hilfe und Hinweis sehr dankbar!

    lg Daniel

  • #2
    Wenn ich dich richtig verstanden habe:
    [highlight="sql"]
    select
    sum(iif( id = 1 or id2=1)) as s1,
    sum(iif( id = 2 or id2=2)) as s2,
    ...
    from
    <tabelle>;
    [/highlight]

    Comment


    • #3
      summiert er so wirklich alle zusammen??

      Was ist denn iif??

      Comment


      • #4
        Sorry hatte da was vergessen
        [highlight="sql"]
        SELECT
        sum(iif( id = 1 OR id2=1, Anzahl, 0)) AS s1,
        sum(iif( id = 2 OR id2=2, Anzahl, 0)) AS s2,
        ...
        FROM
        <tabelle>;
        [/highlight]
        IIF() ist ein If ..then.. else
        Wenn die Bedingung ( 1. Parameter) wahr ist nimmt er den 2. Parameter sonst den 3.

        Comment


        • #5
          Bei mir sagt kommt die Meldung, dass die Funktion iif nicht existiert.

          Ich benutze MySQL

          Comment


          • #6
            Tja, so ist das mit SQL-Dialekten. Deshalb ist es hilfreich, wenn das DBMS gleich am Anfang erwähnt wird; auch gibt es für eine Reihe von DBMS eigene Unterforen.

            Außerdem sollte es einfach sein, die eigene Doku durchzulesen. In drei Minuten habe ich unter 12.2. Ablaufsteuerungsfunktionen gefunden, dass IF(...) genau dasselbe macht wie das, was Markus unter IIF beschrieben hat.

            Jürgen

            Comment


            • #7
              Originally posted by Jürgen Thomas View Post
              Tja, so ist das mit SQL-Dialekten. Deshalb ist es hilfreich, wenn das DBMS gleich am Anfang erwähnt wird; auch gibt es für eine Reihe von DBMS eigene Unterforen.

              Außerdem sollte es einfach sein, die eigene Doku durchzulesen. In drei Minuten habe ich unter 12.2. Ablaufsteuerungsfunktionen gefunden, dass IF(...) genau dasselbe macht wie das, was Markus unter IIF beschrieben hat.

              Jürgen
              ja gut, das stimmt schon. Aber würde gerne einen Befehl nehmen, der unabhängig vom DBMS ist. Das ist der Grund warum ich das nicht von Anfang an erwähnt hatte.

              lg

              Comment


              • #8
                Die Abfrage ist ja, dass er Anzahl erst addiert, wenn er den entsprechenden Datensatz gefunden hat. Das ist aber gar nicht nötig. Also ist auch im Prinzip kein if nötig wie ich meine.
                Ich möchte einfach nur die Anzahl mehrerer Datensätze miteinander addieren

                Comment


                • #9
                  Originally posted by daniel_bln View Post
                  Ich möchte einfach nur die Anzahl mehrerer Datensätze miteinander addieren
                  Hi,

                  verstehe ich dein Anliegen falsch oder ist die Lösung ganz einfach?

                  [highlight=sql]
                  SELECT sum(anzahl) FROM catchword WHERE (ID = 1 AND ID2 = 1)
                  OR (ID = 2 AND ID2 = 1)
                  [/highlight]
                  "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

                  Viele Grüße Novi

                  Comment


                  • #10
                    Hallo,
                    Originally posted by daniel_bln View Post
                    ...Ich möchte jetzt die Summe bilden zwischen den Eintrag wo ID=1 und ID2=1 mit dem Eintrag wo ID = 2 und ID2 = 1. Und immer so weiter ...
                    Sorry, damit komme ich nicht ganz klar. Wie bildet man eine Summe zwischen zwei Werten? Mit einer Differenz zwischen zwei Werten könnte ich was anfangen...
                    Und was ist unter "Und immer so weiter ..." zu verstehen.

                    Originally posted by daniel_bln View Post
                    ...Die zweite Abfrage wäre,dass ich sage, dass ich den ersten Eintrag löschen will ...
                    Dann sag es doch einfach...
                    Originally posted by daniel_bln View Post
                    ...unter der Bedinung, dass Anzahl>0 ist und unter der Bedinungen, dass die Anzahl des dritten Eintrags >0 ist und so weiter halt. Dabei suche ich immer nach der ID und der IDNr.
                    Welches ist der "dritte Eintrag"? Sobald es mehr als zwei Einträge gibt, ist die Anzahl des dritten Eintrags immer 1. Damit reduzieren sich die Bedingungen: Wenn die Anzahl > 0 sein und ein dritter Eintrag existieren muß, dann muß die Anzahl einfach >= 3 sein, damit beide Bedingungen erfüllt sind. Oder spielt das mysteriöse "und so weiter halt" noch eine Rolle?

                    Originally posted by daniel_bln View Post
                    ...Ich möchte einfach nur die Anzahl mehrerer Datensätze miteinander addieren
                    Die Anzahl eines Datensatzes ist IMMER 1. Damit ist die Summe der Anzahl mehrerer Datensätze exakt gleich der Anzahl der Datensätze. Du mußt dafür also keine Summe bilden!

                    Gruß Falk
                    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                    Comment


                    • #11
                      Vielen Dank an alle für die Mühe. Ich habe mich vielleicht an einigen Stellen missverständlich ausgefrückt, ich meinte das was Novi gepostet hat. Vielen Dank für die Lösung.

                      lg Daniel

                      Comment


                      • #12
                        Originally posted by Falk Prüfer View Post
                        Hallo,


                        Sorry, damit komme ich nicht ganz klar. Wie bildet man eine Summe zwischen zwei Werten? Mit einer Differenz zwischen zwei Werten könnte ich was anfangen...
                        Und was ist unter "Und immer so weiter ..." zu verstehen.


                        Die Anzahl eines Datensatzes ist IMMER 1. Damit ist die Summe der Anzahl mehrerer Datensätze exakt gleich der Anzahl der Datensätze. Du mußt dafür also keine Summe bilden!

                        Gruß Falk
                        Wie hilfreich Aber lustige Einwände!
                        "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

                        Viele Grüße Novi

                        Comment

                        Working...
                        X