SQL для запроса узлов drupal с несколькими таксономиями - PullRequest
0 голосов
/ 28 сентября 2011

Доброе утро всем. Я прочитал некоторые из предложенных вопросов перед тем, как опубликовать это, но похоже, что ни у кого нет такой же проблемы (возможно, и указатель того, насколько я плох в Drupal и кодировании в целом)

Мне нужно написать запрос, который возвращает все узлы с ДВУМЯ СПЕЦИФИЧЕСКИМИ таксономиями, связанными с ним (из которых я знаю идентификаторы), но, похоже, я не знаю правильный синтаксис, потому что мне просто удается заставить его работать Один термин ID.

Вот что у меня пока (и работает)

SELECT * FROM node 
INNER JOIN term_node AS tn ON node.vid = tn.vid 
LEFT JOIN content_type_extra_content AS xc ON node.vid = xc.vid 
WHERE tn.tid IN (SELECT th.tid FROM term_hierarchy AS th WHERE th.tid = '146')

То, что «146» - это идентификатор первого термина таксономии, который мне нужно проверить (назовите его «обувь») Теперь я должен проверить, что узел также имеет идентификатор таксономии «223» (назовите его «сезон»)

Я пробовал разные решения безрезультатно. Я почти уверен, что решение у меня под носом, но в данный момент я не могу обернуть голову вокруг него.

Обратите внимание, что таксономии находятся в разных словарях, и они находятся на уровне 0

Заранее спасибо за любую помощь

1 Ответ

2 голосов
/ 28 сентября 2011

Если я вас правильно понимаю, вы хотите узлы, которые имеют 2 конкретных термина (обувь и время года), тогда попробуйте что-то вроде этого:

SELECT * FROM node 
INNER JOIN term_node AS tn ON node.vid = tn.vid 
LEFT JOIN content_type_extra_content AS xc ON node.vid = xc.vid 
WHERE tn.tid IN ('146','223')
GROUP BY node.vid
HAVING count(*) = 2
...