Muéstranos un ejemplo en tabla de los datos contenidos en ambas. Muchas veces ayuda a entender por qué no los devuelve.
Otra cosa es que sería bueno conocer la estructura de las tablas (el CREATE TABLE...).
Finalmente, debes recordar que un campo NULL no se puede emparejar con nada, por lo que tanto Books.id como Books_titles.book_id deben contener valores reales (incluyendo el caracter vacío, que no es el NULL) para poder cruzar datos. Esto último debería ser resuelto con el uso de LEFT JOIN, en tanto Boooks contenga todos los libros, y Books_titles dependa de ella.
¿Esto es así?
La prueba, ¿la hiciste copiando lo que yo postee, o hiciste una sentencia propia?
Probemos esto:
Código sql:
Ver originalSELECT
B.id,
B.title,
IF(BT.BT.title_lang IS NULL, B.title, BT.book_title) titulo
FROM books B LEFT JOIN books_titles BT ON B.id = BT.book_id
WHERE BT.title_lang IN ('fi') OR BT.book_id IS NULL
ORDER BY titulo;