Я пробую выбирать поля, которые не переведены, но не могу находить способ это делать.
Languages Table
+---------------+---------------+ | language_name | language_code | +---------------+---------------+ | English | en | | Español | es | | Italiano | it | +---------------+---------------+
Статус Table
+-----------+ | status_id | +-----------+ | 1 | | 2 | +-----------+
Translation Статус Table
+-----------+---------+---------+---------+----+ | tr_status_id | tr_status_translate | tr_lang | +-----------+---------+---------+---------+----+ | 1 | for rent | en | | 2 | for sale | en | | 1 | alquiler | es | +-----------+---------+---------+---------+----+
Mysql Query
SELECT languages.*, tr_ptstatus.*
FROM languages, tr_ptstatus
WHERE languages.language_code NOT IN (
SELECT tr_lang FROM tr_ptstatus
)
GROUP BY language_code
Например, в таблице tr_ptstatus еще он не готов перевести for выходит в испанский язык и в итальянца.
Результат, который я хочу получить на экране:
for засолите is not translated to Испанский язык for засолите is not translated to Итальянский язык for rent is not translated to Итальянский
Давайте получать количество языков:
select count(*) from Languages
И сейчас, давайте считать реестры в translation_status, счет которой меньше, чем это:
select tr_status_id , count(*)
from translation_status
group by tr_status_id
having count(*) < (select count(*) from languages)
Это будет возвращать нам список tr_status_id, который они не переведены на все языки. сейчас чтобы знать, что языки не, он осложнен, потому что мы должны изобретать реестры, так как мы знаем, в которых они находятся, но не в которых они не.
, Так что то, что мы сделаем, является списком всех языков, и объединим из-за правой стороны предыдущий query, и остаемся одиноким с реестрами, которые у них есть tr_status_translate пусто...
select language_code, tr_status_id, tr_status_translate
from Languages left join translation_status as status ON tr_lang = language_code
where
tr_status_id in (select tr_status_id
from translation_status
group by tr_status_id
having count(*) < (select count(*) from languages)
and
length(tr_status_translate) = 0
ЗАМЕЧАЕТ: это досталось руку и не проверено.