MYSQL: Standardwert falls Datensatz nicht vorhanden

kannaum

Mitglied
Hallo,

folgende Ausgangssituation:
In einer Datenbank sind Leute gespeichert und wie sie bei bestimmten Abstimmungen abgestimmt haben.
Wie sie abgestimmt haben möchte ich aber nur speichern, wenn sie Ja oder Nein gestimmt haben oder abwesend waren, Enthaltungen möchte ich nicht speichern.
Ich hole mir von der Datenbank nun alle Leute und füge mit einem left join die Abstimmungen hinzu.
Nun möchte ich aber nur eine bestimmte Abstimmung haben.
Allein mit einer WHERE-Clause, die einfach die id der Abstimmung überprüft, entgehen mir aber die Enthaltungen, da diese ja nicht explizit gespeichert sind.

Es ist also vereinfacht folgendes Datenbankmodell:
Tabelle members: idMember, nameMember
Tabelle votes: idVote, nameVote
Tabelle voteResults: idMember, idVote, position
Nun möchte ich alle members haben und die position bei einer besonderen Abstimmung und falls diese nicht angegeben ist, dass an dieser Stelle ein Standardwert zurückgeliefert wird.

Hat jemand eine Idee, wie sich das umsetzen lässt?

mfg
Philipp
 
LEFT JOIN + IFNULL() + Subquery

Also etwa so
SQL:
SELECT
    m.idmember,
    m.namemember,
    IFNULL(vr.position, 'default') AS position
FROM
    members m
    LEFT JOIN (
        SELECT  position
        FROM    voteresults
        WHERE   idVote = 123
    ) vr ON m.idmember = vt.idmember
 
Vielen Dank für die schnelle Antwort!

Leider liefert diese Abfrage (wenn man den Schreibfehler (?) in der letzten Zeile "vt.idmember" ausbessert) den Fehler
#1054 - Unknown column 'vr.idMember' in 'on clause'
 
Sorry, mein Fehler. idmember noch in den SELECT des Subquery stecken
SQL:
SELECT
    m.idmember,
    m.namemember,
    IFNULL(vr.POSITION, 'default') AS POSITION
FROM
    members m
    LEFT JOIN (
        SELECT  POSITION, idmember
        FROM    voteresults
        WHERE   idVote = 123
    ) vr ON m.idmember = vr.idmember
 

Neue Beiträge

Zurück