我需要知道term_data表中tid的类型。例如,我想知道这个tid是否是ed-classifieds模块的一种类型?
这是我现在的查询,不是100%正确
# get all the parent categories for the ed classifieds
SELECT th.tid, td.name, n.type
FROM term_hierarchy th
LEFT JOIN term_data td ON th.tid = td.tid
LEFT JOIN term_node tn ON tn.tid = td.tid
LEFT JOIN node n ON n.nid = tn.nid
WHERE th.parent = '0'
#AND n.type = 'ed_classified'
GROUP BY th.tid
提前致谢
答案 0 :(得分:7)
这里可能会有一些混乱。术语本身只是自由浮动的实体,如免费标签或类别。它们可以分为“词汇表” - 词汇表id存储在term_data表的“vid”列中。
您在该查询中提取的“节点类型”是使用分类术语标记的节点的内容类型。该类型不是术语本身固有的 - 给定术语可用于同时标记许多不同类型的内容。但是,术语只能属于单个词汇。
答案 1 :(得分:3)
除了eaton所说的(和往常一样正确)之外,请注意term_node通过nid + vid连接到节点,而不仅仅是nid:自Drupal 6以来,术语与修订版相关。
所以你的最后一次加入应该是在n.vid = tn.vid而不是n.nid = tn.nid