Мне интересно следующее, запрос ниже выберет соответствующие поля, если установлен язык.
Первый вопрос, мне нужны поля, заголовок, ключевые слова и описание из таблицы страниц или, еслиязык соответствует, и поле не является нулевым в таблице page_langs.Теперь я делаю это с тремя операторами IF, возможно ли сделать это за один IF?
Ниже работает запрос, и возвращаемый массив выглядит примерно так:
Array ( [0] => Array ( [Page] => Array ( [id] => 2 [lft] => 2 [rght] => 7 ) [0] => Array ( [title] => Welcome [keywords] => welcome [description] => welcome ) ) )
Итак,id, lft и rght находятся «внутри массива Page (-> pages AS)», заголовок, ключевые слова и описание находятся вне массива Page, имеет смысл, конечно, но как мне получить эти три поля в массиве Page,поэтому я могу использовать arr [Page] [title], чтобы получить заголовок вместо arr [0] [title]?
$sql = "SELECT Page.id, Page.lft, Page.rght,
IF (STRCMP(Lang.title, '') AND
!STRCMP(Lang.langident, '{$lang}'), Lang.title, Page.title) AS title,
IF (STRCMP(Lang.keywords, '') AND
!STRCMP(Lang.langident, '{$lang}'), Lang.keywords, Page.keywords) AS keywords,
IF (STRCMP(Lang.description, '') AND
!STRCMP(Lang.langident, '{$lang}'), Lang.description, Page.description) AS description
FROM pages AS Page
LEFT JOIN page_langs AS Lang
ON Lang.parent_id = Page.id AND Lang.langident = '{$lang}'
WHERE Page.id = {$id}"
Любая помощь (предложения по запросу, возможно?) приветствуется.