Я создал две таблицы для управления многоязычной системой статей:
table1 - таблица, которая используется в качестве индекса всех зарегистрированных статей
table1 = (ART_ID, ART_AUTHOR, ART_DATE)
table2 - это таблица, которая используется для хранения версий статьи на всех языках
table2= (LOC_ID, LOC_TITLE, LOC_TEXT, LOC_LANG, ART_ID)
Моя цель заключается в следующем:
Если я выберу английский в качестве языка;
- Мне нужно просмотреть статьи с существующей английской локализацией, чтобы я мог их редактировать,
[если существует локализация, соответствующая выбранному языку, то она возвращает эту как данные таблицы2].
- Мне также нужно просмотреть статьи без какой-либо локализации (но индекс статьи уже существует в таблице1), поэтому я могу написать английскую версию,
[если для статьи вообще нет локализации, то она возвращаетсяns нулевые данные как данные таблицы2] .
- И, наконец, мне нужно просмотреть статьи, которые уже имеют локализацию на другом языке, чтобы я мог написатьанглийская версия.
[если локализация не соответствует выбранному языку, но существует другая локализация, то она возвращает нулевые данные в качестве данных таблицы.]
но я не смог написать хороший запрос до сих пор ...
Если я использую:
SELECT table1.ART_AUTHOR, table1.ART_DATE, table2.LOC_TITLE, table2.LOC_TEXT
FROM table1
LEFT JOIN table2 ON ( table1.ART_ID = table2.ART_ID )
, он возвращает всю статью во всехязыки, но мне нужны нулевые данные, если выбранный язык еще не локализован.Так что это нехорошо.
Если я использую:
SELECT table1.ART_AUTHOR, table1.ART_DATE, table2.LOC_TITLE, table2.LOC_TEXT
FROM table1
LEFT JOIN table2 ON ( table1.ART_ID = table2.ART_ID )
WHERE table2.LOC_LANG = 'en'
, он возвращает все статьи, написанные на английском языке, но не статьи без локализации и статьи с локализацией на другом языке.Так что это не хорошо.
Если я использую:
SELECT table1.ART_AUTHOR, table1.ART_DATE, table2.LOC_TITLE, table2.LOC_TEXT
FROM table1
LEFT JOIN table2 ON ( table1.ART_ID = table2.ART_ID )
WHERE table2.LOC_LANG = 'en' OR table2.LOC_LANG IS NULL
, он возвращает всю статью, написанную на английском языке, и всю статью без локализации вообще, но не те, с локализацией в другомязык.Так что это нехорошо.
Я пытался с некоторыми подзапросами и существует или не существует, но ничего не достигло цели.
Кто-нибудь знает что-то, что я мог бы использовать, чтобы получитьэто работает?Это вообще возможно?
Спасибо.