Представьте, что у вас есть такая схема таблицы:
+-------------+--------+
| jobs | t_jobs |
+-------------+--------+
| id | id |
| category_id | job_id | t_jobs.job_id = jobs.id
| | locale |
| | status |
+-------------+--------+
В приложении резервный языковой стандарт установлен на «pl».Приложение загружает данные для текущей установленной локали, но если в этой локали нет данных, оно должно загружать данные из резервной локали ('pl').
Теперь у вас есть 3 ситуации:
1) t_jobs.locale = "en" и t_jobs.status = "Опубликовал" и строк следующим образом:
+----------------------------------+
| t_jobs |
+----+--------+--------+-----------+
| id | job_id | locale | status |
+----+--------+--------+-----------+
| 1 | 1 | pl | published |
| 2 | 1 | en | published |
| 3 | 2 | pl | published |
+----+--------+--------+-----------+
результатдолжно быть:
+----+--------+--------+-----------+
| id | job_id | locale | status |
+----+--------+--------+-----------+
| 2 | 1 | en | published |
| 3 | 2 | pl | published |
+----+--------+--------+-----------+
2) t_jobs.locale = "en" и t_jobs.status = "Опубликовал" и строк следующим образом:
+----------------------------------+
| t_jobs |
+----+--------+--------+-----------+
| id | job_id | locale | status |
+----+--------+--------+-----------+
| 1 | 1 | pl | published |
| 2 | 1 | en | hidden |
| 3 | 2 | pl | published |
+----+--------+--------+-----------+
результат должен быть:
+----------------------------------+
| result |
+----+--------+--------+-----------+
| id | job_id | locale | status |
+----+--------+--------+-----------+
| 3 | 2 | pl | published |
+----+--------+--------+-----------+
3) t_jobs.locale = "en" и t_jobs.status = "Опубликовал" и строк следующим образом:
+----------------------------------+
| t_jobs |
+----+--------+--------+-----------+
| id | job_id | locale | status |
+----+--------+--------+-----------+
| 1 | 1 | pl | published |
| 2 | 1 | en | hidden |
| 3 | 2 | pl | hidden |
+----+--------+--------+-----------+
результат должен быть:
+----------------------------------+
| result |
+----+--------+--------+-----------+
| 0 records |
+----------------------------------+
План мечты состоит в том, чтобы выбрать строки в текущей локали ("en"), которые соответствуют критериям поиска, и
Если у нас есть две строки с одинаковым t_jobs.job_id, тогда мы должны выбрать где t_jobs.locale = "en" (переведено) Иначе у нас есть одна строка с таким же t_jobs.job_id, тогда мы должны выбрать, где t_jobs.locale = "pl" (отступление)
Есть ли способ достичь такого результата?Я целый день пробовал немного магии mysql, но все еще безуспешно.Каждая попытка возвращает только резервные версии или только переведенные строки.
Спасибо за вашу помощь.