【问题标题】:SQL to query drupal nodes with multiple taxonomiesSQL查询具有多种分类法的drupal节点
【发布时间】:2011-09-28 10:45:50
【问题描述】:

大家早上好。 在发布之前我已经阅读了一些建议的问题,但似乎没有人遇到我同样的问题(可能是我在 Drupal 和一般编码方面有多糟糕的指标)

我需要编写一个查询来返回所有节点以及与之关联的两个特定分类法(我知道其中的 ID),但我似乎不知道正确的语法,因为我只是设法让它工作一个术语 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”是我需要检查的第一个分类术语的 ID(称之为“鞋子”) 现在我必须检查该节点是否还有分类 ID '223'(称之为“季节”)

我尝试了不同的解决方案,但均无济于事。 我很确定解决方案就在我的眼皮底下,但目前我无法理解它。

请注意,分类法在不同的词汇表中,它们处于 0 级

提前感谢您的帮助

【问题讨论】:

    标签: sql drupal drupal-6 taxonomy


    【解决方案1】:

    如果我理解正确,您需要具有 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
    

    【讨论】:

    • 这是我尝试过的解决方案之一,但它似乎获取了具有两者之一的所有节点,而不仅仅是具有两者的节点
    • 我不明白我一直得到一个空结果,而实际上应该正好是三个。
    • 是的,抱歉之前应该自己测试过。我用 GROUP BY 试过这个版本。我对这个工作寄予厚望! :P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多