Hallo.
Am Freitag, 26. September 2003 22:21 schrieb Dennis Sterzenbach:
Ich habe folgenden SELECT:
SELECT
l.priv
FROM
logins l INNER JOIN users u ON u.uid=l.uid
WHERE
u.uid=10
Dieser tut das, was ich erwartet habe.
Nur möchte ich nun gerne, falls für den Benutzer kein
Eintrag in der Tabelle login definiert wurde eine 1 als priv
geliefert bekommen.
Was liefert dir dein Select denn in diesem Fall?
Ich würde das aus dem Stehgreif so machen:
SELECT IFNULL(l.priv,1) FROM users u LEFT JOIN logins l USING (uid) WHERE
u.uid=10
Funktionsweise: MySQL such alle durch WHERE definierten Datensätze aus users
und sucht dann alle die dazu passenden aus logins. Wird nichts passendes in
logins gefunden, dann sind die Werte dazu NULL. Die Funktion IFNULL wandelt
in diesem Fall das Ergebnis in eine 1.
!! Vorher mit EXPLAIN prüfen, ob die Indizes richtig verwendet werden. Ggf.
müssen Indizes für uid in beiden Tabelle angelegt werden, sonst kann die
Query u.U. ziemlich lange dauern.
Ich hoffe, das klappt so und ist das was du suchtest.
Ciao, René
----------------------------------------------------------------------