Hy!
Ich bin neu hier im Forum und grüße erstmal alle. Ich muß im Sql eine Umsatzliste(laufendes Jahr) für diverse Artikel programmieren. Ich war auch schon halbwegs erfolgreich nur habe ich folgendes Problem: Ich muss alle Artikel anzeigen lassen, auch wenn dieses Jahr nix davon verkauft wurde. In der Ausgabe bringt er mir aber nur Artikel, die bisher auch verkauft wurden. Habe schon einiges probiert und hoffe das mir hier jemand weiterhelfen kann. Ich arbeite mit dem PL/SQL und Oracle 8. Hier noch meine Abfrage:
select a.arnr as Artikelnummer, a.arbe as Artikelbeschreibung, b.me11 as Menge_Nov, b.vk11 as Verkauf_Nov, c.effb as Lagerbestand, b.meges as Menge_Jahr, b.vkges Verkauf_Jahr, b.gsart as Geschäftsart, c.lanr as Lagernummer, b.jahr
from t051art a, t158arst b, t075lag c
where a.manr=1
AND a.manr=b.manr(+)
AND a.manr=c.manr
AND a.arnr=b.arnr(+)
AND a.arnr=c.arnr
AND a.krnr=b.lief(+)
AND b.lanr=c.lanr
AND a.krnr=‚65014‘
AND b.jahr=‚2006‘
order by a.arnr
Die Felder der Datensätze die nicht angezeigt werden sind fast alle leer.
Du hast zwischen Tabelle a und b Outerjoins und zwischen a un c nicht, also fehlen alle Artikel die keinen Eintrag in c haben.
Falls Du mit den Outerjons Probleme bekommst, was bei mehreren Tabellen passieren kann, gibt es noch die Möglichkeit Funktionen zu schreiben. Das ist zwar viel langlamer, aber machmal nicht zu ändern.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Falls Du mit den Outerjons Probleme bekommst, was bei mehreren :Tabellen passieren kann, gibt es noch die Möglichkeit Funktionen zu :schreiben. Das ist zwar viel langlamer, aber machmal nicht zu ändern.
Wenn man das was wofür outer joins da sind mit Funktionen versucht, wird es aber sehr schnell absolut katastrophal langsam …