Per ora ho risolto così, e funziona, però non mi piace
http://pastebin.com/wa40vgUm



Risultato:
http://pastebin.com/3cU2PmrH *
Vediamo di fare un ER simil-decente.
Spoiler
Queste sono le corrispettive tabelle
Spoiler
Dump del database
http://pastebin.com/fqUfyNk9
L'entità essenze l'ho tradotta con la tabella essenze.
L'entità referencestourl l'ho tradotta con la tabella referencestourl.
L'entità lingua l'ho tradotta con l'entità essenzetransl.
La relazione traduzione l'ho collassata su essenzetransl.
Le altre due relazioni le ho collassate su essenze.
La query che mi serve è questa:
"seleziona tutte le essenze dal database con relativi url e relativa traduzione in inglese ('en'), preoccupandoti per ogni tupla di verificare se esiste o meno la traduzione in inglese. Se non esiste, restituisci la tupla in lingua italiana 'it'".
Ora, io ho risolto semplicemente UNENDO due select distinte: la prima che fa la selezione per la lingua inglese, la seconda che trova le sole tuple che non hanno una traduzione e in tal caso restituisce la traduzione italiana.
Non posso fare una left outer join e basta perché in tal caso, invece della traduzione italiana mi da una sfilza di null (giustamente).

Voi avete mica qualche idea?
* Nei dati c'è un errore. Ho sbagliato ad inserire una entry: il campo globe_url nella terza riga dovrebbe essere "globes/Europe.gif", comunque a livello di logica non cambia assolutamente nulla.