Christian: SELECT empty_tbl.x, ... FROM empty_tbl, ...

Beitrag lesen

'n Abend allerseits,

Hintergrund (nicht unbedingt problemrelevant):

Es geht um ein Mitteilungssystem.
Dem Benutzer soll in seinem "Archiv" seine verfassten Mitteilungen angezeigt bekommen.
Dabei soll angezeigt werden, an wen er die jeweilige Mitteilung geschickt hat.
Es gibt verschiedene Empfänger-Gruppen, die in verschiedenen Datenbanktabellen gespeichert sind.
Wenn man die Menge aller Empfänger betrachtet, sind bestehen IDs mehrfach.
In der Mitteilungstabelle ist deswegen Empfänger-Gruppe und Empfänger-ID gespeichert, womit eine eindeutige Zuweisung möglich ist.

Ich habe nun folgendes Problem:

Eine MySQL-Abfrage der Art "SELECT x.a, x.b, x.c, Empfaenger-Gruppe1.a, Empfaenger-Gruppe2.a, Empfaenger-Gruppe3.b FROM x, Empfaenger-Gruppe1, Empfaenger-Gruppe2, Empfaenger-Gruppe3" wählt keine Datensätze aus, wenn beispielsweise Empfaenger-Gruppe2 eine leere Tabelle ist.

Ich bin mir dabei sicher, dass in diesem Fall in der WHERE-Klausel diese Tabelle auch nicht betrachtet wird.
Wenn ich die leere Tabelle aus der Abfrage lösche, funktioniert es wie gewünscht.

Es passiert aber schon mal, dass eine Empfänger-Gruppe leer ist.

Kann man einen Ausdruck in die Abfrage hinzufügen, dass MySQL sich nicht an der leeren Tabelle stört?

Oder gibt's eine Abfrage wie is_empty?(Empfaenger-Gruppe1 || Empfaenger-Gruppe2 || Empfaenger-Gruppe3) -> {true, false} oder muss ich da was anderes mit PHP basteln, damit er eine Anfrage ohne die entsprechende Empfaenger-Gruppe macht, falls diese leer ist?
Letzteres würde recht viel Aufwand bedeuten, für etwas, was nur sehr selten vorkommt.
Da wäre es vielleicht sogar besser, immer zu sehen, dass irgendein inhaltsloser Eintrag immer in den Empfaenger-Gruppen-Tabellen bestehen bleibt...

Viele Grüße
Christian