Задать вопрос
Slash-Zn
@Slash-Zn

Как добавить условие выборки WHERE, если page_id > 0?

Здравствуйте.
Есть такой запрос:
$rows = $this->database()
					->select('feed.*, u.view_id, f.friend_id AS is_friend, ' . phpfox::getUserField())
					->unionFrom('feed')
					->join($this->database()->getTable('user'), 'u', 'u.user_id = feed.user_id')
					->leftJoin($this->database()->getTable('friend'), 'f', 'f.user_id = feed.user_id AND f.friend_user_id = ' . (int) phpfox::getUserId())
					->where($cond)
					->order($order)
					->limit($offset, $totalFeeds)
					->execute('getSlaveRows');

В него мне необходимо добавить часть, которая связанна не со всеми записями:
->leftJoin($this->database()->getTable('pages'), 'pages', 'pages.page_id = feed.page_id')

И заменить WHERE:
->where(array_merge($cond, ['AND pages.privacy NOT IN (1, 2, 3, 4)']))

Поле "feed.page_id" может иметь, кроме ID страницы, NULL. Как можно осуществлять проверку, прямо в запросе: если не NULL, то добавлять "AND pages.privacy NOT IN (1, 2, 3, 4)". Если NULL, то данную строку использовать не надо?

Спасибо.
  • Вопрос задан
  • 72 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
AND (pages.privacy IS NULL OR pages.privacy NOT IN (1, 2, 3, 4))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы