Ankündigung

Einklappen
Keine Ankündigung bisher.

2 gleiche werte suchen und dann 3ten wert zusammenzählen

Einklappen

Neue Werbung 2019

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

  • 2 gleiche werte suchen und dann 3ten wert zusammenzählen

    hallo!

    ich hab folgendes problem:

    ich habe die spalten sid, product_id, quantity

    wenn jetzt die sid und die product_id beim
    nächsten eintrag gleich sind soll die alte quantity
    mit der neuen zusammengezählt werden.

    kann mir da wer weiterhelfen?

    lg kremser

  • #2
    Meinst du sowas?
    Code:
    SELECT
        SUM(quantity)
    FROM
        tabelle
    GROUP BY
        sid,
        productid

    Kommentar


    • #3
      naja bei der ausgabe is es so wie ich es wollte
      aber in der db sollte es dann auch so sein..
      wie stell ich denn das an?

      Kommentar


      • #4
        Nunja, das ist nicht ganz so einfach. Gehe am besten folgendermaßen vor:

        Definiere eine zweite Tabelle, die exakt die gleichen Eigenschaften hat, wie deine aktuelle Tabelle, die dann allerdings noch einen zusätzlichen UNIQUE-Schlüssel über die Spalten sid und productid hat, damit hier gar nicht mehr doppelte Einträge vorkommen können.
        Anschließend überträgst du die Einträge aus der Originaltabelle in die neue Tabelle mit einer INSERT ... SELECT-Abfrage:
        Code:
        INSERT INTO tabelle2
            (sid,
            productid,
            quantity)
        SELECT
            sid,
            productid,
            SUM(quantity)
        FROM
            tabelle1
        GROUP BY
            sid,
            productid
        Nun würdest du natürlich eine Fehlermeldung wie "DUPLICATE ENTRY IN" erhalten, wenn du einen Eintrag machen möchtest, für den sid und productid schon existieren. Für diesen Fall gibt es aber den Zusatz ON DUPLICATE KEY UPDATE, mit dem einfach der Wert für quantity in dem entsprechenden Datensatz erhöht werden kann. Das könnte dann beispielsweise so aussehen, wenn für quantity der Wert 5 eingetragen werden soll, aber schon ein Datensatz mit sid = 2 und productid = 10 exisitiert:
        Code:
        INSERT INTO
            tabelle2
        SET
            sid          = 2,
            productid = 10,
            quantity   = 5
        ON DUPLICATE KEY UPDATE
            quantity = quantity + 5
        Die Ursprungstabelle tabelle1 kann nun natürlich gelöscht werden und tabelle2 umbenannt werden:
        Code:
        DROP TABLE tabelle1;
        RENAME TABLE tabelle2 TO tabelle1;

        Kommentar


        • #5
          danke für deine mühe.. werd mich dann damit befassen

          Kommentar

          Lädt...
          X