Auge: Bedingung in WHERE-Klausel

Beitrag lesen

Hallo

Gibt es in MySQL eine Möglichkeit, in der WHERE-Klausel eine Bedingung (IF()) zu formulieren? Ich habe eine Tabelle mit Beiträgen, die sowohl von registrierten wie von unregistrierten Benutzern stammen können. In der Tabelle der Beiträge wird für unregiestrierte Benutzer deren Angabe zu Name und Email hinterlegt. Ist der Benutzer registriert, wird dort nur dessen ID hinterlegt.

Ich möchte dem Autor eines Beitrags Nachrichten über Kommentare zu den Beiträgen zukommen lassen. Ist der betreffende Benutzer nicht registriert, ist das einfach, ich lade einfach seinen namen und die Emailadresse aus der Tabelle. Stammt ein Beitrag von einem registrierten Benutzer, sollen Daten zu diesem Benutzer stattdessen aus der Benutzertabelle geholt werden, denn dort sind sie vermerkt.

Tabelle: Beitraege
id | text  | user_id | name | email           | email_notify
 1 | bla   |       0 | Ulf  | ulf@example.com |            1
 2 | blubb |       1 |      |                 |            1

Tabelle: Benutzer
id | name | email
 1 | Alf  | alf@example.com

SELECT  
t1.id,  
t1.user_id,  
t1.name,  
t1.email  
FROM Beitraege AS t1  
WHERE t1.email_notify = 1

Frage ich nur die Tabelle Beitraege ab, erhalte ich alle relevanten Beiträge, für registrierte Benutzer aber nur deren ID.

SELECT  
t1.id,  
t1.user_id,  
t1.name,  
t1.email,  
t2.name AS uname,  
t2.email AS uemail  
FROM Beitraege AS t1, Benutzer AS t2  
WHERE t1.email_notify = 1  
	AND t1.user_id = t2.id

Verknüpfe ich sie mit der Tabelle Benutzer, erhalte ich widerum nur Datensätze, die von registrierten Benutzern stammen aber nicht die der nicht registrierten Benutzer.

Wie kann ich die Abfrage mit _einem_ Query erledigen, und alle Daten, egal, ob von registrierten oder nicht registrierten Benutzern, erhalten? Ist es zudem möglich, dass Daten aus der Tabelle Benutzer die analogen Felder aus der Tabelle Beiträge überschreiben, falls sie in der Tabelle Benutzer vorhanden sind? Ich möchte auf die Art vermeiden, im Ergebnis nach "name und "uname" bzw. "email" und "uemail" unterscheiden zu müssen.

Tschö, Auge

--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
Veranstaltungsdatenbank Vdb 0.3