tabellenverknüpfung und "null" werte

hallo!

ich habe 2 tabellen:

Fragen:
UID - primär key
Frage

Antworten:
UID -primär
UserID
FragenID - schlüssel von fragen
Antwort

nun mein problem:

ich möchte aus der datenbank alle fregen haben und die dazu gehörigen antworten.
sollte eine frage noch keine antwort haben, soll die frage dennoch eingelesen werden, und das antwort-feld null, bzw leer sein

natürlich WHERE UserID = "xxx" :)

bin für jeden tip dankbar!
 
Ich versteh dein Problem nich so ganz. normal wird soch jeder satz ausgegeben, auch wenn dort felder keine werte haben. solange du nicht explizit angibst "where Antwort != NULL"

Oder reden wir aneinander vorbei?
 
also, meine abfrage lautete.

Code:
select f.frage, a.antwort from frage as f 
left outer join antwort as a on
 f.uid = a.fragenid 
where a.userid = 1

wenn ich die where klausel weg lasse, klappt es
so bekomme ich nur die fragen, die der user 1 au ch beantwortet hat...
aber ich brauche alle fragen

kopf->tisch ();
 
Wenn Du Where a.UserID = 1 eingibst ist das schon klar!

Falls Du nur die zwei Tabellen miteinander verknüpfen willst dann kannst Du das so auch machen.

SELECT f.Frage as Frage, a.Antwort as Antwort FROM Fragen as f, Antworten as a WHERE f.UID = a.FragenID;
 
wenn du user id 0 nimmst und in der tabbelel die id eingibst musste der alle fragen anzeigen mit und ohne antwort
 
hab mir das ganze mal kurz angeschaut...meine erste idee waere natuerlich folgende
Code:
select f.frage, a.antwort from frage as f 
left outer join antwort as a on
 f.uid = a.fragenid 
where a.userid = 1 OR a.userid IS NULL

was jedoch nur funktoniert, wenn noch keine antworten von einer anderen person auf diese "NULL FRAGEN" gemacht worden sind --> unbrauchbar.

moeglich ist das ganze sicherlich mit irgendwelchen IF/SWITCH-CASE konstrukten. aber ob nicht ein
SELECT * FROM frage ORDER BY fragenid
und
SELECT * FROM antowrt WHERE uid = 1 ORDER BY fragenid
einfacher ist, ist die andere frage (ist schlussendlich nur 1 select mehr und bei der ausgabe hast du auch nicht mehr schleifendurchgaenge).

ach ja...subselects sind da natuerlich auch moeglich...aber erst mit mysql 5 oder so (korrigiert mich wenn ich mich mit der version vertan hab...nutze in letzter zeit nur noch postgres)
 
Zurück
Oben