Dos sugerencias:
1) crear un campo traddefault o algo así, y poner en él la traducción, y otro campo langdefault, y así en el caso de password para cat, escribiría en traddefault password y en langdefault ang. Sólo tendrías que escribir los datos default cuando faltara el lang_name, como en ese caso. Luego en la selección condiciono a que si el campo lang_name está vacío, se traiga como malg_code ang y como lang_name el dato de langdefault, es decir, password.
Código sql:
Ver originalSELECT IF(lang_name="", traddefault, lang_name) trad, IF(lang_name="", langdefault, malg_code) lengua FROM userstc_malg WHERE malg_code = "cat" AND col_name = "password"
2) Otra opción es hacerlo con programación. En la consulta te traes siempre el valor de cat y el de ang. Luego cargas en tu programa y si el valor de lang_name de cat está vacío, usaría el de ang.
Código sql:
Ver originalSELECT lang_name, malg_code
FROM userstc_malg
WHERE col_name = "password"
AND (
malg_code = "cat"
OR malg_code = "ang"
)
ORDER BY malg_code DESC
ordeno descendente para que siempre cargue el inglés, ang, al final, y poder procesar antes las demás lenguas...
Pero si quieres una solución rebuscada con MySQL, puedes lanzar una consulta como esta:
Código sql:
Ver originalSELECT u.col_name, IF( t1.trad = '', u.malg_code, t1.leng ) lengua, IF( t1.trad = '', u.lang_name, t1.trad ) traduccion
FROM userstc_malg u
INNER JOIN (
SELECT col_name col, malg_code leng, lang_name trad
FROM `userstc_malg`
WHERE col_name = "password"
AND malg_code = "cat"
)t1 ON t1.col = u.col_name
WHERE u.col_name = "password"
AND u.malg_code = "ang"
Se trae en el centro mediante selección el valor para cat, luego realiza un inner join con la consulta que se trae eso mismo para ang, usando como union el valor del campo col_name, que es password, y muestra, en el caso de que lang_name de la segunda consulta sobre cat esté vacío, el lang_name de ang, y también el malg_code...
Yo no recomiendo hacer dos consultas sobre la misma tabla, cuando podrías resolverlo con una y cargando con programación, o resolviendo mediante esos campos default.
Es lo que se me ocurre.