views: тяжелый или неправильный запрос?

Главные вкладки

Аватар пользователя Valeratal Valeratal 10 июня 2009 в 12:19

Такой вопрос. С помощью Bulk Operations хочу выловить все ноды, которые не относятся к какой либо группе (og) (затем с помощью фильтра по термину таксономии, отобрать и добавить материалы в определенную группу)
Стиль: Bulk Operations, в настройках отмечаю галкой "Add post to the specified group (og_add_group_action)"

Также есть фильтры, чтобы не показывать темы форума

вот собственно запрос

SELECT node.nid AS nid,
   node.title AS node_title
 FROM node node
 LEFT JOIN og_ancestry og_ancestry ON node.nid = og_ancestry.nid AND (og_ancestry.group_nid = 8078 OR og_ancestry.group_nid = 7310 OR og_ancestry.group_nid = 2222 OR og_ancestry.group_nid = 7312 OR og_ancestry.group_nid = 7328 OR og_ancestry.group_nid = 7263 OR og_ancestry.group_nid = 7314 OR og_ancestry.group_nid = 7311 OR og_ancestry.group_nid = 7316 OR og_ancestry.group_nid = 7861 OR og_ancestry.group_nid = 7326 OR og_ancestry.group_nid = 7862 OR og_ancestry.group_nid = 7317 OR og_ancestry.group_nid = 15511)
 WHERE (node.type not in ('forum', 'cv', 'idea', 'job', 'ka', 'simplenews')) AND (og_ancestry.group_nid IS NULL)
   

При сохранении этого вида, настройки сбрасываются вообще.

Что я делаю не так? запрос сложный или поставил взаимоисключащие условия

Комментарии

Аватар пользователя elia elia 10 июня 2009 в 13:51

А среди разработчиков SQL вообще не котируется что ли?

Это должно быть в WHERE clause, а не в FROM clause, как Вы написали:
AND (og_ancestry.group_nid = 8078 OR og_ancestry.group_nid = 7310 OR og_ancestry.group_nid = 2222 OR og_ancestry.group_nid = 7312 OR og_ancestry.group_nid = 7328 OR og_ancestry.group_nid = 7263 OR og_ancestry.group_nid = 7314 OR og_ancestry.group_nid = 7311 OR og_ancestry.group_nid = 7316 OR og_ancestry.group_nid = 7861 OR og_ancestry.group_nid = 7326 OR og_ancestry.group_nid = 7862 OR og_ancestry.group_nid = 7317 OR og_ancestry.group_nid = 15511)
И при таком "коде" должны не настройки сбрасываться, а мускул ругаться грязными словами.

Аватар пользователя elia elia 10 июня 2009 в 14:46

Я не знаю правильный этот запрос или нет, но по всем правилам он должен выглядеть так:

SELECT node.nid AS nid,
   node.title AS node_title

 FROM
 node
 LEFT JOIN
 og_ancestry
 ON
 node.nid = og_ancestry.nid

 WHERE
 (node.type NOT IN ('forum', 'cv', 'idea', 'job', 'ka', 'simplenews'))
 AND
 (og_ancestry.group_nid IS NULL)
  AND
 (og_ancestry.group_nid = 8078 OR og_ancestry.group_nid = 7310 OR og_ancestry.group_nid = 2222 OR og_ancestry.group_nid = 7312 OR og_ancestry.group_nid = 7328 OR og_ancestry.group_nid = 7263 OR og_ancestry.group_nid = 7314 OR og_ancestry.group_nid = 7311 OR og_ancestry.group_nid = 7316 OR og_ancestry.group_nid = 7861 OR og_ancestry.group_nid = 7326 OR og_ancestry.group_nid = 7862 OR og_ancestry.group_nid = 7317 OR og_ancestry.group_nid = 15511)

Аватар пользователя Valeratal Valeratal 10 июня 2009 в 15:03

странно, код то генерируется вьюс

пытался импортировать Ваш, но вьюс выругался на невозможность интерпритации

Аватар пользователя elia elia 10 июня 2009 в 15:06

"Valeratal" wrote:
пытался импортировать Ваш, но вьюс выругался на невозможность интерпритации

выполните этот запрос в phpmyadmin - может быть ошибка в обращении к несуществующему полю таблицы или еще что.

Аватар пользователя Valeratal Valeratal 10 июня 2009 в 15:24

видимо что у меня с Bulk Operations, в настройках отмечаю галкой "Add post to the specified group (og_add_group_action)"

в фильтрах ничего
запрос

SELECT node.nid AS nid,
   node.title AS node_title
 FROM node node
   

при сохранении все настройки сбрасываются