У меня есть запрос на перевод:
(структура таблицы:
- line_id
- lang ("en" или "ru")
- текст
так, в таблице это выглядит так:
5 | en | Test
6 | en | Hello!
7 | en | Another words
6 | ru | Привет!
и все переводы находятся в одной таблице с ключом line_id, который не зависит от языка)
SELECT txt.line_id, txt.text AS o, ru.text AS t
FROM text AS txt, text AS ru
WHERE txt.line_id = ru.line_id
AND txt.lang = 'en';
вернет такой массив
> [5] => Array ( [line_id] => 5 [o] => Test [t] => Test
> [6] => Array ( [line_id] => 6 [o] => Hello! [t] => Hello! )
> [7] => Array ( [line_id] => 6 [o] => Hello! [t] => Привет! )
o - оригинальный текст, t - перевод.
Как удалить из строки набора №6, потому что у нас есть перевод в следующей строке. GROUP BY убьет # 7 и сохранит # 6 строку.
лучший результат будет:
> [5] => Array ( [line_id] => 5 [o] => Test [t] => )
> [6] => Array ( [line_id] => 6 [o] => Hello! [t] => Привет! )
без [o] => Привет! [t] => Привет!