hi,
ich hoffe ihr könnt mir bei dem folgenden problem helfen (sitze jetzt schon einige Stunden daran):
ich habe 3 tabellen: services, changeform und personen
ich möchte nun über changeform eine abfrage machen. dort sind u.a. IDs enthalten, die auf die anderen beiden tabellen verweisen (s_id bzw. p_id) und dort genau so heißen.
ich möchte nun bei meiner abfrage nicht nur einfach die einträge aus changeform haben, sondern anstatt der IDs die entsprechenden einträge aus den anderen beiden tabellen.
das wäre an und für sich nicht so schwierig über
Code:
SELECT
CF.<alle spalten, die ich haben will>,
S.s_name,
P.p_name
FROM
changeform CF,
personen P,
services S
WHERE
CF.s_id=S.s_id
AND
CF.p_id=P.p_id
;
das problem ist nur, daß der eintrag für p_id in changeform nur optional ist, defaultmäßig steht da 0 drin. ich möchte nun eine abfrage, die überprüft, ob da was anderes als 0 drinsteht und ggf., neben den anderen einträgen, anstatt der s_id den entsprechenden namen aus personen holt (dort existiert kein eintrag für s_id=0). falls 0 drin steht, kann das ruhig zurückgegeben werden, das bedeutet dann einfach "da steht nichts drin".
als ergebnis sollen alle einträge aus changeform ausgegeben werden mit den entsprechenden werten aus den anderen beiden tabellen anstatt der IDs sowie, falls p_id=0, genau das anstatt eines werts (den es ja nicht gibt, weil in personen kein eintrag dafür existiert) zurückgegeben wird.
wie müßte ein solches statement aussehen (DB ist MySQL)?