Filtern aber 0-Werte behalten

Antwort erstellen

Smilies
:D :) :( :o :shock: :? 8-) :lol: :x :P :razz: :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :badgrin: :doubt:
BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet
Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Filtern aber 0-Werte behalten

Re: Filtern aber 0-Werte behalten

Beitrag von Kerstin83 » 20. Aug 2019, 22:35

das SQL ist doch gut geordnet und gut lesbar.

Ich habe es aber doch ganz anders gelöst. Einfach mit einer OR-Clause...

Re: Filtern aber 0-Werte behalten

Beitrag von Gast » 20. Aug 2019, 10:03

Hi Heinz,

das hängt von Deinen persönlichen Vorlieben ab. Ich hab einfach mit Notepas++ und 'Poor Man's T-SQL Plug-in' mit Standard Einstellungen formatiert. Da gibt es aber je nach benutztem Programm/Dienst, jede Menge Einstellungen (z.B. sqlinform).

Alles ist besser als der unformatierte Access SQL-Code.

Gruß CV

Re: Filtern aber 0-Werte behalten

Beitrag von Gast » 20. Aug 2019, 08:56

Hallo,
ist der SQL-Code von CV schon geordnet geordnet oder kann man ihn wegen der Lesbarkeit besser strukturieren?
Wie müsste man also ihn ggf. hier schreiben??
Gruß Heinz

Re: Filtern aber 0-Werte behalten

Beitrag von Kerstin83 » 19. Aug 2019, 17:46

Danke !
Mit der Nz-Funktion hat es geklappt. (War ja dann eigentlch auch schon bei Christian mit dabei, hatte ich nur nicht so wahrgenommen).

Liebe Grüße

Kerstin :P

Re: Filtern aber 0-Werte behalten

Beitrag von ComputerVersteher » 18. Aug 2019, 19:18

Hi,

das hat er übersehen, aber etwas Eigeninitiative wäre schön ;)
Code: Alles auswählen
SELECT tblArtikel.ArtID
   ,Nz(Bestellt.ArtSumme, 0)
FROM tblArtikel
LEFT JOIN (
   SELECT ArtID
      ,Sum(Menge) AS ArtSumme
   FROM tblBestellungen
   LEFT JOIN tblBestellungenPositionen ON tblBestellungen.BestID = tblBestellungenPositionen.BestellID
   WHERE blBestellungen.Bestelldatum BETWEEN #9 / 1 / 2018 #
         AND #12 / 31 / 2018 #
   GROUP BY tblBestellungenPositionen.ArtID
   ) AS Bestellt ON tblArtikel.ArtID = Bestellt.ArtID;


Gruß CV

Re: Filtern aber 0-Werte behalten

Beitrag von Gast » 18. Aug 2019, 18:50

Danke.

Bist du dir da ganz sicher ?

Also bei mir werden durch die Bedingung
Code: Alles auswählen
WHERE blBestellungen.Bestelldatum Between #9/1/2018# And #12/31/2018#

alle Artikel rausgefiltert, bei denen keine Bestellung in diesem Zeitraum war. Das ist auch so, wenn ich den Join umdrehe :(

Re: Filtern aber 0-Werte behalten

Beitrag von Bitsqueezer » 18. Aug 2019, 15:15

Hallo,

Du gehst ja von den Bestellungen aus, um die ArtID zu ermitteln. Wenn Du als erste Tabelle die Artikelliste verwendest und von da aus einen LEFT JOIN auf die Bestellungen, hast Du alle Artikel und nur die Bestellungen, die für die jeweiligen Artikel existieren.

Mit Nz kannst Du dann aus NULL auch 0 machen.

Gruß

Christian

Filtern aber 0-Werte behalten

Beitrag von Kerstin83 » 18. Aug 2019, 13:56

Liebes Forum :P :P

..ich erläutere das an einem Beispiel.

Ich möchte gerne von allen Artikeln wissen, wieviele in einem bestimmten Zeitraum verkauft wurden. Das geht mit einer solchen Abfrage:
Code: Alles auswählen
SELECT ArtID, Sum(Menge)
FROM tblBestellungen LEFT JOIN tblBestellungenPositionen ON tblBestellungen.BestID = tblBestellungenPositionen.BestellID
WHERE blBestellungen.Bestelldatum Between #9/1/2018# And #12/31/2018#
GROUP BY tblBestellungenPositionen.ArtID;

Dann werden aber nur diejenigen Artikel angezeigt, die auch in dem Zeitraum verkauft wurden. Ich möchte gerne, dass in der Liste auch die anderen, in dem Zeitraum nicht verkauften Artikel vorkommen, mit der Menge 0.

Kann man das in einer Query/Abfrage machen ? (mit zwei Abfragen, bei der die zweite die o.g. Abfrage einbindet geht das natürlich).

Liebe Grüße

Kerstin :P

Nach oben

cron