sql - 在复杂的 SQL 查询方面需要帮助——我想我需要一个两阶段的内部联接或类似的东西?

标签 sql mysql

好的,这就是我想要做的。我在 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/

相关文章:

sql - 如何自动将实体模型更改部署到数据库?

java - uri : http://java. sun.com/jsp/jSTL/core 无法在 web.xml 或使用此应用程序部署的 jar 文件中解析

mysql - 为什么 mySql 不重新识别表字段列表中的列?

mysql - 按最大修订字符串分组

sql - BULK INSERT 0 受影响的行

php - PDO:setAttribute() 对 dblib 和 SQL Server 没有影响

mysql - database.yml 中的特殊字符作为密码

php - undefined variable : records in C:\XAMPP\htdocs\display_prsc. php 第 29 行

php - 处理一个简单的订单表单 php

python - 如何使用 Python API 迭代 SQLite 数据库?