好的,这就是我想要做的。我在 mysql 中有一个 drupal 表 (term_data),其中列出了标签及其 ID 号,第二个表 (term_node) 显示了标签与标签所引用的数据之间的关系。例如,如果节点 1 有 3 个标签,“A”、“B”和“C”。 term_data 可能看起来像这样:
name tid
A 1
B 2
C 3
term_node 可能看起来像这样:
nid tid
1 1
1 2
2 2
3 3
3 2
在此示例中,节点 1 已标记为“A”和“B”,节点 2 已标记为“A”,节点 3 已标记为“B”和“C”。
我需要编写一个查询,在给定标签名称的情况下,为我列出曾经与该标签一起使用的所有其他标签。在上面的示例中,搜索“A”应该返回“A”和“B”,因为节点 1 两者都使用,搜索“C”应该返回“B”和“C”,搜索“B”应该返回“A” "、"B"和 "C"。
有什么想法吗?我做到了这一点:
select distinct n.nid from term_node n INNER join term_data t where n.tid = t.tid and t.name='A';
这为我提供了每个已标记为“A”的节点的列表 - 但我无法弄清楚下一步。
谁能帮帮我?
最佳答案
尝试:
select distinct d2.name
from term_data d1
join term_node n1 on d1.tid = n1.tid
join term_node n2 on n1.nid = n2.nid
join term_data d2 on n2.tid = d2.tid
where d1.name = 'A'
关于sql - 在复杂的 SQL 查询方面需要帮助——我想我需要一个两阶段的内部联接或类似的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4015915/