Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

INNER JOIN mit Unterabfrage

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von chrisi303, 25 Februar 2016.

  1. chrisi303

    chrisi303 Aktiver Benutzer

    Hallo Ich habe ein Problem mit einer Abfrage mach ich was bei der Notation falsch wahrscheinlich ;-)

    Code:
    SELECT
    b.* , summe
      FROM [eazybusiness].[dbo].[tBestellung] as b
      INNER JOIN  (       
                    SELECT  sum([tbestellpos].[fVKNetto] * [tbestellpos].[nAnzahl] )
                    FROM [eazybusiness].[dbo].[tbestellpos]
                    where  [tbestellpos].[nType] = 1
                    AND  [tbestellpos].[fVKPreis] >0
                    ) as summe
      on b.[kBestellung] = [tbestellpos].[tBestellung_kBestellung]
    
      WHERE MONTH(b.[dErstellt]) = 2
      and   YEAR(b.[dErstellt]) = 2016
      and b.[nStorno] = 0
      and b.[cType] = 'B'
    Fehler:
    Meldung 8155, Ebene 16, Status 2, Zeile 11
    Kein Spaltenname wurde für die Spalte 1 von 'summe' angegeben.
    Meldung 4104, Ebene 16, Status 1, Zeile 11
    Der mehrteilige Bezeichner 'tBestellPos.tBestellung_kBestellung' konnte nicht gebunden werden.
    Meldung 207, Ebene 16, Status 1, Zeile 3
    Ungültiger Spaltenname 'summe'.

    -definiere ich nicht mit as "summe"?
    -'tBestellPos.tBestellung_kBestellung' existiert?

    hat jemand eine Idee?
     
  2. ukulele

    ukulele Datenbank-Guru

    Also dein Subselect INNER JOIN (..) ist eine Tabelle die "summe" als Alias bekommt. In der ON-Bedingung vom Join heist die Tabelle dann schon "summe", du kannst also nicht auf [tbestellpos].[tBestellung_kBestellung] joinen. Außerdem muss der Subselect natürlich auch die Spalte tBestellung_kBestellung zurück geben, da wäre ein GROUP BY im Subselect auf tBestellung_kBestellung vermutlich angebracht.
     
  3. chrisi303

    chrisi303 Aktiver Benutzer

    mmm super vielen Danke so klappt es
    Code:
    SELECT summe.wert , b.tBenutzer_kBenutzer
      FROM [eazybusiness].[dbo].[tBestellung] as b
      INNER JOIN  (    SELECT sum([tbestellpos].[fVKNetto] * [tbestellpos].[nAnzahl] ) as wert, [tBestellung_kBestellung] as bnummer
        
                FROM [eazybusiness].[dbo].[tbestellpos]
                 Where  [tbestellpos].[nType] = 1
                 AND  [tbestellpos].[fVKPreis] >0
                GROUP BY [tBestellung_kBestellung]
                    ) as summe
      on b.[kBestellung] = summe.bnummer
    
      WHERE MONTH(b.[dErstellt]) = 2
      and   YEAR(b.[dErstellt]) = 2016
      and b.[nStorno] = 0
      and b.[cType] = 'B'
    
    jetzt bekomme ich eine spalte: den wert des auftrages und den benutzer für den gesamten Monat
    Wie kann ich jetzt weitere machen wenn ich den gesamten Auftragswert pro Benutzer pro Monat abfragen möchte?
    so einfach wie GROUP BY b.tBenutzer_kBenutzer ist es ja nicht
     
  4. ukulele

    ukulele Datenbank-Guru

    Irgendwie wirkt das doppelt gemoppelt. Kannst du mal Beispieldatensätze geben und was raus kommen soll?
     
  5. chrisi303

    chrisi303 Aktiver Benutzer

    das Ergebnis der Abfrage stimmt mit dem aus der Warenwirtschaft überein (habe es nach gerechte) das ist schon mal super.
    das Ergebnis jeder Auftrag (summe und Verkäufer) des Monats .
    wert tBenutzer_kBenutzer
    147.35179800000 9
    47.00000000000 9
    251.26050420168 10
    596.46472000000 9
    1180.25288652000 9
    1165.80006000000 9
    1027.60204800000 11
    176.42220000000 9
    163.00860000000 21
    628.19577600000 9
    9.89920000000 10
    8.36134453782 10
    ...
    jetzt Interessent mich aber nur die Summe aller Aufträge pro Verkäufer (Umsatz proVerkäufer)
     
  6. chrisi303

    chrisi303 Aktiver Benutzer

    Asche auf mein Haupt, es war so einfache.

    SELECT sum(summe.wert) as gesamt , b.tBenutzer_kBenutzer as verkaeufer
    ....
    GROUP BY b.tBenutzer_kBenutzer
     
  7. ukulele

    ukulele Datenbank-Guru

  8. chrisi303

    chrisi303 Aktiver Benutzer

    danke für dein denk Anstoß. Ihr seit alle sehr aufmerksam hier, großes Lob
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden