Ich habe zwei Tabellen, eine für englische Kategorienamen und eine andere für spanische Kategorienamen.MySQL: Rückgabe leeres Feld statt keiner Zeile
Ich versuche, eine kleine Schnittstelle zu schreiben, die es einem Admin ermöglicht zu sehen, für welche englischen Kategorien eine Übersetzung noch bereitgestellt werden muss.
Ich schreibe es unter der Annahme, dass wenn Sie eine spanische Kategorie erstellen, er die ID der englischen Kategorie erbt.
Um eine Ergebnismenge von entsprechenden Kategorien zu erhalten, habe ich diese Anfrage:
SELECT tbl_cms_categories_en.id as id,
tbl_cms_categories_en.name as en,
tbl_cms_categories_es.name as es
FROM tbl_cms_categories_en, tbl_cms_categories_es
WHERE tbl_cms_categories_en.id = tbl_cms_categories_es.id
Das gibt eine schöne Liste von Einträgen:
Dieses gut meinen Zweck dient, aber es ist ein Mangel. Wenn in der spanischen Tabelle keine Zeile vorhanden ist, gibt sie keine abgeleitete Zeile zurück.
Wie könnte ich meine Abfrage so ändern, dass, wenn es eine Zeile in der englischen Tabelle gibt, aber nicht die spanische, ich die abgeleitete Zeile zurückgeben könnte, um "Keine Übersetzung gefunden" zu sagen.
Akin:
ID = 8, en = "Security", es = "Translation Not Found"
Jede mögliche Anleitung geschätzt werden bigly.
Danke Jungs!
Sie wollen eine kurze Lektüre auf OUTER JOIN machen. Verwenden Sie dann COALESCE oder das Äquivalent, um das Nullfeld durch die Zeichenfolge "not found" zu ersetzen. Und bedenken Sie umgekehrt (Spanisch, aber kein Englisch). – Glenn
Sie müssen die explizite JOIN-Syntax mit einem 'LEFT OUTER JOIN' verwenden, wobei Sie' JOIN'- und 'ON'-Klauseln verwenden, da ein impliziter Join immer ein innerer Join ist. –