Hallo Zusammen, mein Wissen mit mySQL beschränkt sich seeeeehr auf die Basics, deshalb habe ich auch bereits hier Probleme...also ich habe folgenden Code:
Wenn in allen "fk" Feldern ein gültiger FK drinsteht (wecher in den zu "joinenden" Tabellen vorhanden ist) - so gibt mir mySQL (logischwerweise) nachher für alle fk-Felder die entsprechenden und korrekten Werte zurück.
Mein Problem ist jetzt aber, dass ich NICHT immer alle FKs habe, d.h. es kann druchaus sein, dass nur fkSprache und fkBeruf vorhanden sind - diese zeigen dann auf einen korrekten Datensatz in den entsprechenden Tabellen - gleichzeitig sind aber alle übrigen FKs auf den Wert "0" gesetzt (welcher NICHT in den entsprechenden Tabelle vorhanden ist (kann ihn auch nicht erstellen, da überall autoincrement ist)). Jetzt gibt mir SQL leider direkt FÜR ALLE FKs leere Werte zurück, d.h. auch für die, die eigentlich vorhanden sind (Sprache und Beruf), der Grund dafür sind vermutlich die ANDs ... weiss aber nicht wie ich die Abfrage sonst schreiben müsste (mit OR gehts ja schon mal nicht).
Ich hoffe konnte mich halbwegs verständlich ausdrücken.
Danke für die Hilfe.
PHP Code:
SELECT kmlKorrekturmeldungen.*, DATE_FORMAT(Erfasst, '%d.%m.%Y') as Erfasst, DATE_FORMAT(Erledigt, '%d.%m.%Y') as Erledigt , kmlSprache.Bezeichnung as Sprache, kmlBeruf.Bezeichnung as Beruf,
kmlLehrgang.Bezeichnung as Lehrgang, kmlAusgabe.Bezeichnung as Ausgabe, kmlRegister.Bezeichnung as Register
FROM kmlKorrekturmeldungen LEFT JOIN (kmlSprache, kmlBeruf, kmlLehrgang, kmlAusgabe, kmlRegister)
ON (
kmlKorrekturmeldungen.fkSprache = kmlSprache.pkSprache AND
kmlKorrekturmeldungen.fkBeruf = kmlBeruf.pkBeruf AND
kmlKorrekturmeldungen.fkLehrgang = kmlLehrgang.pkLehrgang AND
kmlKorrekturmeldungen.fkAusgabe = kmlAusgabe.pkAusgabe AND
kmlKorrekturmeldungen.fkRegister = kmlRegister.pkRegister
)
order by Erfasst
Mein Problem ist jetzt aber, dass ich NICHT immer alle FKs habe, d.h. es kann druchaus sein, dass nur fkSprache und fkBeruf vorhanden sind - diese zeigen dann auf einen korrekten Datensatz in den entsprechenden Tabellen - gleichzeitig sind aber alle übrigen FKs auf den Wert "0" gesetzt (welcher NICHT in den entsprechenden Tabelle vorhanden ist (kann ihn auch nicht erstellen, da überall autoincrement ist)). Jetzt gibt mir SQL leider direkt FÜR ALLE FKs leere Werte zurück, d.h. auch für die, die eigentlich vorhanden sind (Sprache und Beruf), der Grund dafür sind vermutlich die ANDs ... weiss aber nicht wie ich die Abfrage sonst schreiben müsste (mit OR gehts ja schon mal nicht).
Ich hoffe konnte mich halbwegs verständlich ausdrücken.
Danke für die Hilfe.
Comment