Drupal - 为啥在视图中的 SQL 查询中出现“FROM 节点节点”?

Posted

技术标签:

【中文标题】Drupal - 为啥在视图中的 SQL 查询中出现“FROM 节点节点”?【英文标题】:Drupal - Why 'FROM node node' in the SQL query in Views?Drupal - 为什么在视图中的 SQL 查询中出现“FROM 节点节点”? 【发布时间】:2011-05-25 22:21:10 【问题描述】:

好的...我正在深入研究 Drupal 的内部,以了解其中到底发生了什么:)

我确信这是一个非常愚蠢的问题,但是当我创建节点视图时,为什么 SQL 查询是“SELECT [....] FROM node node”而不仅仅是“SELECT [....] FROM node' 第二个'node'代表什么?

干杯, 詹姆斯

【问题讨论】:

【参考方案1】:

“node node”是表别名,恰好与查询中的真实表名相同。别名用于JOIN 语句。

可以使用 tbl_name AS alias_name 或 tbl_name alias_name 为表引用设置别名:

我猜测即使不需要,drupal 也会生成别名。

【讨论】:

明确的原因很可能是 Drupal 支持数据库表前缀,因此另一个安装上的节点实际上可能类似于 drupal_node。为了始终能够识别该表,views 添加了一个别名。【参考方案2】:

正如 brian_d 所说,node 的第二次出现是用于查询的表别名。可能(尽管我不确定)别名是作为经过清理的标识符生成的,以防实际表名像Star$Linked_System:username:password@example.com:3306:/some/insane;filesystem 这样笨拙。

对于像node 这样的好名字,净化后的版本与原始版本相同。

【讨论】:

以上是关于Drupal - 为啥在视图中的 SQL 查询中出现“FROM 节点节点”?的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 视图过滤器中的 SQL 函数

跳过 Drupal 视图查询中的第一个条目?

sql语句联合查询 与 视图想比较的话,那个效率快,为啥。

Drupal 视图过滤器中的 OR 运算符

为啥 Django 在更改列表视图页面中进行不必要的 SQL 查询?

Drupal 使用 group by 和 sum 查看查询