Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

JOIN geht nicht

  Alt 1. Jan 2013, 15:38
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBExpert
Prost Neujahr,

habe hier folgende Stored Procedure :

Code:
CREATE PROCEDURE NEW_PROCEDURE
returns (
    artnr integer,
    jahrout integer,
    mon01 decimal(15,2))
as
begin
  FOR SELECT
    NR AS ARTNR,
    JAHR,
    SUM (CASE MONAT WHEN 1 Then
           UMSATZ
           ELSE
             0
         END) as Mon01
FROM STAT S RIGHT JOIN ART A ON S.ID_ART=A.ID WHERE (JAHR = 2011 OR
   JAHR=2012) AND
  (ID_KUNDE=0) AND (A.ID=2871839) GROUP BY ARTNR,JAHR
  INTO :ARTNR,:JAHROUT,:MON01 do
  suspend;
end
Pro Artikel brauche ich 2 Zeilen (für Statistik, hier eine für 2011 und 2012). Die sind auch meistens da. Allerdings nur dann, wenn zu einem Artikel tatsächlich ein Statistik-Datensatz existiert. Ist keiner da, dann ist nur 1 Zeile zu sehen. Es heisst aber auch so :

"RIGHT JOIN: Return all rows from the right table, even if there are no matches in the left table"

Wo ist da jetzt der Denkfehler ? Es sollen immer 2 Zeilen in der Datenmenge sein, selbst wenn zu den entsprechenden Artikeln keine Statistik-Daten existieren.
Gruß
Hansa
  Mit Zitat antworten Zitat