![]() |
AW: Datensatz immer ausgeben
Zitat:
PS: Das ist meine Test-Datenbank (in ADS):
SQL-Code:
create table restaurants(id integer, name cichar(30));
create table gerichte(id integer, restaurant_id integer, name cichar(30)); create table bestellungen(id integer,gericht_id integer, datum date); insert into restaurants values(1,'Löwen'); insert into restaurants values(2,'Ochsen'); insert into restaurants values(3,'Sonne'); insert into gerichte values(1,1,'Braten'); insert into gerichte values(2,1,'Schnitzel'); insert into gerichte values(3,2,'Eintopf'); insert into gerichte values(4,2,'Suvlaki'); insert into gerichte values(5,3,'Pommes'); insert into gerichte values(6,3,'Currywurst'); insert into bestellungen values(1,1,curdate()); insert into bestellungen values(2,2,curdate()); insert into bestellungen values(3,3,curdate()); |
AW: Datensatz immer ausgeben
Wenn die Restaurants nicht extra ausgewertet werden (mit outer join), können die leeren auch nicht auftauchen. Dein erstes Beispiel war gut.
|
AW: Datensatz immer ausgeben
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,
beim Microsoft SQL Server gibts den Befehl COALESCE Abfrage 1: SELECT smiGkLage FROM tblTest Das Ergebnis siehst Du in Ergebnis1.JPG Abfrage 2: SELECT COALESCE(smiGkLage, -1) FROM tblTest Das Ergebnis wird durch COALSECE so manipuliert, dass wenn das Ergebnis NULL ist, der 2. Wert in der Klammer eingesetzt wird. (siehe Ergebnis2.jpg) Vielleicht gibst in Deiner DB auch so eine Möglichkeit Gruß Rolf |
AW: Datensatz immer ausgeben
Coalesce ist manchmal nützlich, aber nicht, wenn man gar keinen Datensatz hat.
Die Anforderung war, "Datensatz immer ausgeben", nicht "Feld immer anzeigen". Ein Datensatz wird immer ausgegeben, wenn alle where - Bedingungen passen, ob aus einem Join oder wie auch immer. Das Beispiel von Joachim zeigt das ja schon. |
AW: Datensatz immer ausgeben
So gehts bei mir nun auch
SQL-Code:
SELECT DISTINCT
Sum(case when bestellungen.datum is null then 0 else 1 end) AS Anzahl, restaurants.id AS Id FROM restaurants,gerichte left outer join bestellungen on bestellungen.gericht_id = gerichte.id WHERE gerichte.restaurant_id = restaurants.id AND (bestellungen.datum = CURRENT_DATE() OR bestellungen.datum is null) GROUP BY restaurants.id |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz