Einkauf gegen Verkauf rechnen: Thomas D.

Moin Moin....

Ich weiss ja nicht wo hier der Hund begraben ist, aber ich möchte nur den Einkauf gegen den Verkauf rechnen.

Hab wohl irgentwo einen Gedankenfehler.

Wäre nett wenn mir jemand dabei helfen könnte.

SELECT SUM( vk )
FROM verkaeufe
WHERE MONTH( geldeingang) =05
Ergebnis: 49.89

SELECT SUM( ek )
FROM einkaeufe
WHERE MONTH( datum ) =05
Ergebnis: 276.46

vk - ek muesste dann eigentlich noch ein Minus geben von -226.57 €

Nun habe ich mir das so zusammen gestrickt

SELECT SUM( e.ek - v.vk ) as gewinn
FROM einkaeufe e, verkaeufe v
WHERE MONTH( e.datum) = 5 and MONTH (v.geldeingang) = 5

Ergebnis : 4.13

Wo hab ich hier den Gedankenfehler ??

Danke schön schon Mal im vorraus und einen schönen Pfingstmontag.

Gruss Thomas

  1. Hallo Thomas!

    Und schon wieder so ein vertauscher von "Name" und "Thema"!

    SELECT SUM( e.ek - v.vk ) as gewinn

    Naja, besser so: SELECT SUM (e.ek) - SUM (v.vk) AS gewinn

    FROM einkaeufe e, verkaeufe v

    Fehlt da nicht ein AS?

    ℆, ℒacℎgas

    --
    Bei der intendierten Realisierung der linguistischen Simplifizierung
    des regionalen Idioms resultiert die Evidenz der Opportunität extrem
    apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
    milierter Xenologien konsequent zu eliminieren!
    1. Hi...

      Also hab es umgestrickt

      SELECT SUM( e.ek ) - SUM( v.vk ) as gewinn
      FROM einkaeufe e, verkaeufe v
      WHERE MONTH( e.datum) = 5 and MONTH (v.geldeingang) = 5

      Ergebnis weiterhin 4.13 €

      Da kann was nicht stimmen, wenn ich nur wüßte wo.

      1. Hi
        Probiers mal so:
        SELECT (SUM( e.ek ) - SUM( v.vk )) as gewinn

        FROM einkaeufe e, verkaeufe v
        WHERE MONTH( e.datum) = 5 and MONTH (v.geldeingang) = 5

        Gruß Uli

        1. Habs probiert gleiches Ergebnis, ich verteh es nicht

          SELECT (SUM( e.ek ) - SUM( v.vk )) as gewinn
          FROM einkaeufe e, verkaeufe v
          WHERE MONTH( e.datum) = 5 and MONTH (v.geldeingang) = 5

          immer noch 4.13, dabei bekomme ich bei den SUm Abfragen
          wie im ersten Thread beschrieben die Gesamtbeträge
          ausgeworfen.

          Kann da was an der Tabellenstruktur falsch sein ?

          1. Hallo,

            SELECT (SUM( e.ek ) - SUM( v.vk )) as gewinn
            FROM einkaeufe e, verkaeufe v
            WHERE MONTH( e.datum) = 5 and MONTH (v.geldeingang) = 5

            immer noch 4.13, dabei bekomme ich bei den SUm Abfragen
            wie im ersten Thread beschrieben die Gesamtbeträge
            ausgeworfen.

            nein, du machst einen logischen Fehler. Da du die Datensätze nicht über die Artikelnummer verknüpfst, bekommst du in den Summen auch Artikel mit ek in 5 und vk in 6, oder vk in 5 und ek in 4 usw..
            Hilfreich ist es in solchen Fällen immer, sich Teilergebnisse anzusehen, bevor man Summen bildet.

            select e.ek Einkauspreis, v.vk Verkaufspreis, g.geb Gebuehren, e.artikelnr ArtikelNr, e.datum Einkausdatum, v.datum Verkaufsdatum  
            from einkaufe e, verkaeufe v, gebuehren g  
            where month(e.datum) = 5  
            and month(v.datum = 5  
            and e.artikelnr = v.artikelnr
            

            cu,
            ziegenmelker

            1. Hallo Ziegenmelker

              War mal wieder ein sehr guter Tip, hab mir die ganze Sache mal zu gemüte geführt und es an meine Bedürfnisse angepasst.

              Guckst du ->

              select e.ek Einkaufspreis, v.vk Verkaufspreis, g.gesamt Gebühren,
              e.artikelnummer EKArtikelNr,
              v.artikelnummer VKArtikelNr, e.datum Einkaufsdatum , v.geldeingang
              Verkaufsdatum from einkaeufe e,
              verkaeufe v, gebuehren g
              where month(e.datum) = 5
              and month(v.geldeingang) = 5 and e.artikelnummer = v.ekartikelnummer and
              g.artikelnummer = v.artikelnummer

              Supi, gibt mir nun die wesentlichen Spalten aus, nur wie berechne ich nun die Gesamtsumme aus dem Table einkaeufe, gegen gerechnet zu den gesamten Verkaeufen aus Table verkaeufe.

              Eigentlich nur zusammen rechnen der Gesamtsumme EK aus einkaeufe, danach zusammen rechnen der Gesamtsumme vk aus verkaeufe und dann GesamtEK - Gesamtvk rechnen.

              1. Hallo Thomas,

                select e.ek Einkaufspreis, v.vk Verkaufspreis, g.gesamt Gebühren,
                e.artikelnummer EKArtikelNr,
                v.artikelnummer VKArtikelNr, e.datum Einkaufsdatum , v.geldeingang
                Verkaufsdatum from einkaeufe e,
                verkaeufe v, gebuehren g
                where month(e.datum) = 5
                and month(v.geldeingang) = 5 and e.artikelnummer = v.ekartikelnummer and
                g.artikelnummer = v.artikelnummer

                Supi, gibt mir nun die wesentlichen Spalten aus, nur wie berechne ich nun die Gesamtsumme aus dem Table einkaeufe, gegen gerechnet zu den gesamten Verkaeufen aus Table verkaeufe.

                Eigentlich nur zusammen rechnen der Gesamtsumme EK aus einkaeufe, danach zusammen rechnen der Gesamtsumme vk aus verkaeufe und dann GesamtEK - Gesamtvk rechnen.

                ja, das machst du wieder mit der sum-Funktion, beachte aber daß diese Aggregatfunktionen scheitern, wenn du noch Spalten wie EKArtikelNr hast. Dein gewünschtes Ergebnis soll ja nur eine Zeile haben, deshalb sprach ich bei diesem Query hie auch von einem Zwischenschritt.
                Wenn du jetzt erkannt hast, daß deine Ergebnismenge korrekt ist, lässt du die irrelevanten Spalten einfach weg und bildest wie gehabt deine Summe.
                Entweder über sum(e.ek) as Gesamteinkaufspreis, sum(v.vk) as .......
                oder über sum(v.vk - e.ek - g.gesamt) as Gesamtgewinn

                cu,
                ziegenmelker

                1. Hier mal ein paar Select Befehle die nun auch alle funzen

                  Verkaufte Waren gegen Eingekaufte Waren gerechnet
                  -------------------------------------------------
                  select sum(v.vk)- sum(e.ek) as Gesamtgewinn from verkaeufe v,
                  einkaeufe e where e.verkauft = v.artikelnummer

                  Reingewinn von verkauften Waren (noch kein Zahlungseingang auf Konto)
                  ---------------------------------------------------------------------
                  select sum(v.vk)- sum(e.ek) - sum(g.gesamt) as Gesamtgewinn from verkaeufe v,
                  einkaeufe e, gebuehren g where e.verkauft = v.artikelnummer and
                  g.artikelnummer = v.artikelnummer

                  Reingewinn nach Zahlungseingängen
                  ----------------------------------
                  select sum(v.vk)- sum(e.ek) - sum(g.gesamt) as Gesamtgewinn from verkaeufe v,
                  einkaeufe e, gebuehren g where e.verkauft = v.artikelnummer and
                  g.artikelnummer = v.artikelnummer and MONTH(e.datum) = 05 and
                  MONTH (v.geldeingang) = 05

                  Danke Herr Ziegenmelker

          2. Hallo,

            erläutere bitte nochmal deine Tabellenmodellierung genauer. Aus deinem Posting weiter unten werd ich nicht wirklich schlau.

            Und vorallem, welches Ergebnis möchtest du? Du summierst irgendwelche VK Beträge von irgendwelchen EK Beträgen in Abhängigkeit von Monaten...

            Versuche dein Problem / deine Aufgabenstellung einfach nochmal zu beschreiben.

            Kann da was an der Tabellenstruktur falsch sein ?

            Technisch vielleicht nicht, aber logisch durchaus.

            Ciao, Frank

      2. Moin!

        SELECT SUM( e.ek ) - SUM( v.vk ) as gewinn
        FROM einkaeufe e, verkaeufe v
        WHERE MONTH( e.datum) = 5 and MONTH (v.geldeingang) = 5

        Ergebnis weiterhin 4.13 €

        Dann wir es zeit nachzuschauen, in welcher der Datensätze der Geldeingang UND das Einkaufsdatum im Mai war. Vielleicht hilft Dir ein:

        WHERE
          MONTH( e.datum) = 5
        OR
          MONTH (v.geldeingang) = 5

        über den Berg.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    2. Hallo,

      Fehlt da nicht ein AS?

      Nicht unbedingt, kommt auf die DB an, bei Oracle, MS Access und SQL Server ist das AS meines Wissens nach optional, erhöht aber die Lesbarkeit.

      Ciao, Frank

    1. Hi Ludger

      Wo ist das denn ein Doppelposting hier geht es zwar um die selbe Datenbank aber um eine ganz andere Sache. Sollte ich mich irren, bitte ich um Entschuldigung und setze bei dem alten Posting wieder an.

      Grus Thomas