Announcement

Collapse
No announcement yet.

Brauche Hilfe bei einer Abfrage

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

  • Brauche Hilfe bei einer Abfrage

    Hallo Zusammen,

    ich stehe gerade auf dem Schlauch und komme nicht weiter. Ich habe eine Tabelle mit folgender Struktur:

    Kundennummer
    Artikelnummer
    Anzahl
    PLZ

    Wenn ich eine Liste aller Artikel der Kunden der PLZ 12345 haben möchte mache ich das so:

    SELECT Artikelnummer, SUM(Anzahl) AS ANZ FROM tab WHERE PLZ='12345'

    Jetzt möchte ich aber zum Vergleich neben diese Liste die Verkäufe für den Kunden mit der Nummer 4 stellen. Das Ergebniss sollte dann etwa so aussehen:

    Artikel, Anzahl aus PLZ, Anzahl Kunde 4
    1234, 80, 4
    1235, 76, 0
    1236, 23, 89
    1237, 0, 104

    Aber wie bringe ich denn jetzt diese beide Listen zu einer Abfrage zusammen?

    Danke

  • #2
    Originally posted by Maik20 View Post
    Hallo Zusammen,

    ich stehe gerade auf dem Schlauch und komme nicht weiter. Ich habe eine Tabelle mit folgender Struktur:

    Kundennummer
    Artikelnummer
    Anzahl
    PLZ

    Wenn ich eine Liste aller Artikel der Kunden der PLZ 12345 haben möchte mache ich das so:

    SELECT Artikelnummer, SUM(Anzahl) AS ANZ FROM tab WHERE PLZ='12345'

    Jetzt möchte ich aber zum Vergleich neben diese Liste die Verkäufe für den Kunden mit der Nummer 4 stellen. Das Ergebniss sollte dann etwa so aussehen:

    Artikel, Anzahl aus PLZ, Anzahl Kunde 4
    1234, 80, 4
    1235, 76, 0
    1236, 23, 89
    1237, 0, 104

    Aber wie bringe ich denn jetzt diese beide Listen zu einer Abfrage zusammen?

    Danke
    [HIGHLIGHT="sql"]
    SELECT Artikelnummer,
    SUM(Anzahl) AS ANZPLZ
    COUNT (Kunde) AS AnzKunde
    FROM tab
    WHERE PLZ='12345'
    GROUP BY Artikelnummer
    [/HIGHLIGHT]
    Zuletzt editiert von ebis; 18.06.2008, 19:07. Reason: high

    Comment


    • #3
      Danke, aber ich glaube du hast die Frage nicht verstanden bzw. ich hab es schlecht erklärt.

      Dein Ergebnis liefert:

      Die Anzahl der Kunden zu der Artikelnummer.

      Ich möchte aber die Anzahl der Artikel nur von Kunde 4

      Also diese Abfrage:

      SELECT Artikelnummer, SUM(Anzahl) AS ANZPLZ FROM tab WHERE PLZ='12345'GROUP BY Artikelnummer

      Und diese Abfrage

      SELECT Artikelnummer, SUM(Anzahl) AS ANZ FROM tab WHERE Kundenummer=4 GROUP BY Artikelnummer

      Zusammen in einer? Sprich irgendwie die Artikelnummer als Schlüssel verwenden und zusammenfügen.

      Aus dem Ergebnis lese ich dann.

      Die Artikelnummer 123 wurde von Allen Kunden aus der PLZ 12345 60 mal gekauft und der Kunde mit der Kundennummer 4 hat den Artikel 12345 5 mal gekauft.

      Comment


      • #4
        Hallo,

        eine Lösung könnte in etwa so aussehen:
        [highlight=sql]
        SELECT a.Artikelnummer, SUM(a.Anzahl) AS ANZPLZ,
        (SELECT SUM(b.Anzahl)
        FROM tab b
        WHERE b.Kundenummer = 4 AND b.Artikelnummer = a.Artikelnummer) as ANZ_KUNDE4
        FROM tab a WHERE a.PLZ = '12345'
        GROUP BY a.Artikelnummer
        [/highlight]

        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


        • #5
          Danke das hilft mir schon ein gutes Stück weiter.

          Aber was ist wenn ich neben der Anzahl noch ein paar weitere Parameter brauche?

          Anzahl, Gewicht und Preis?

          Wie übergebe ich dann aus der Subquery drei Parameter zurück?

          Comment


          • #6
            Hallo,

            da kann man dann eine Derived Table verwenden oder noch besser man legt sich eine View an.

            [highlight=sql]
            SELECT a.Artikelnummer, SUM(a.Anzahl) AS ANZPLZ, kunde4.anzahl AS ANZ_KUNDE4, kunde4.preis PREIS_KUNDE4, kunde4.gewicht GEWICHT_KUNDE4
            FROM tab a
            left join (
            SELECT b.Artikelnummer, b.preis, b.gewicht, SUM(b.Anzahl) anzahl
            FROM tab b
            WHERE b.Kundenummer = 4
            group by b.Artikelnummer, b.preis, b.gewicht) kunde4 on kunde4.Artikelnummer = a.Artikelnummer
            WHERE a.PLZ = '12345'
            GROUP BY a.Artikelnummer
            [/highlight]

            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

            Working...
            X