请帮助此查询!需要获取相关节点的分类条款 -- database 领域 drupal 相关 的问题

Please help with this query! Need to get taxonomy terms of related nodes


1
vote

问题

中文

我继承了在主页上运行的此代码。它用于完成特定相关信息的自定义显示。以下是如何设置的:

我们有一篇文章。它有一系列节点参考字段,允许我们链接相关的图像(实际上是节点本身,其中包含爆头和某些文本;它不是实际附加的图像。)这些爆头都有一个通过ImageCache创建的缩略图所以我们可以在搜索结果和列表类型页面中显示一个小版本。

我们有一个新要求,如果特定文章的相关图像节点具有与之相关的某个分类项(TID),则应显示与其他图像不同。

现有查询(我没有写入)如下所示:

  SELECT DISTINCT n.title, nr.teaser, n.nid, DATE_FORMAT(FROM_UNIXTIME(n.created), '%M %e, %Y') AS date, f.filepath AS image, cfri.field_related_images_nid as image_id   FROM node n JOIN node_revisions nr ON n.nid = nr.nid  LEFT JOIN content_field_related_images cfri ON (n.nid = cfri.nid AND cfri.delta = 0)  LEFT JOIN content_field_att_file cfaf ON cfri.field_related_images_nid = cfaf.nid  LEFT JOIN files f ON cfaf.field_att_file_fid = f.fid   JOIN term_node tn2 ON n.nid = tn2.nid   WHERE n.status = 1 AND n.type = 'article'   AND nr.body LIKE '%kimberly-clark%' AND tn2.tid = 143 ORDER BY n.created DESC LIMIT 3   

这返回一个如下所示的记录集:

  TITLE         |  TEASER           |  NID |  DATE            |  IMAGE                            | IMAGE_ID ========================================================================================================== Exec Profile  |  Could you please | 67491 | April 29, 2011  | sites/default/files/kcjones.jpg   | 67572 Unilver Ads   |  Unilever topped  | 67421 | April 20, 2011  | sites/default/files/unilever.jpg  | 66889   

这一切都很好。但是,我需要做的是(在同一查询中,某种方式)也返回与TERM_NODE表一起使用Image_ID的TID。在自己的单个图像节点上查询很简单:

  SELECT tid FROM term_node WHERE nid = 67572   

但是如何根据查询的主要部分中找到的Image_ID来修改现有查询以引入TID?我猜我需要某种子查询,但这正在延长我的SQL Chops的极限...

英文原文

I've inherited this code that runs on our home page. It's used to do a custom display of specific pieces of related info. Here's how things are set up:

We have an article. It has a series of node reference fields that allow us to link related images (actually nodes themselves, which contain a headshot and some text; it's not an actual attached image.) Each of those headshots has a thumbnail created via ImageCache so that we can display a small version in search results and on list-type pages.

We have a new requirement that if the related image node for a specific article has a certain taxonomy term (tid) associated with it, it should display differently than other images.

The existing query (which I did not write) looks like this:

SELECT DISTINCT n.title, nr.teaser, n.nid, DATE_FORMAT(FROM_UNIXTIME(n.created), '%M %e, %Y') AS date, f.filepath AS image, cfri.field_related_images_nid as image_id   FROM node n JOIN node_revisions nr ON n.nid = nr.nid  LEFT JOIN content_field_related_images cfri ON (n.nid = cfri.nid AND cfri.delta = 0)  LEFT JOIN content_field_att_file cfaf ON cfri.field_related_images_nid = cfaf.nid  LEFT JOIN files f ON cfaf.field_att_file_fid = f.fid   JOIN term_node tn2 ON n.nid = tn2.nid   WHERE n.status = 1 AND n.type = 'article'   AND nr.body LIKE '%kimberly-clark%' AND tn2.tid = 143 ORDER BY n.created DESC LIMIT 3 

This returns a recordset that looks like this:

TITLE         |  TEASER           |  NID |  DATE            |  IMAGE                            | IMAGE_ID ========================================================================================================== Exec Profile  |  Could you please | 67491 | April 29, 2011  | sites/default/files/kcjones.jpg   | 67572 Unilver Ads   |  Unilever topped  | 67421 | April 20, 2011  | sites/default/files/unilever.jpg  | 66889 

This is all well and good. But what I need to do is (in the same query, somehow) also return the tid that goes with the image_id from the term_node table. On its own for a single image node that query is simple:

SELECT tid FROM term_node WHERE nid = 67572 

But how do I modify the existing query to bring in the tid based on the image_id found in the main part of the query? I'm guessing I need some kind of subquery, but this is stretching the limits of my sql chops...

  

回答列表

1
 
vote

您已经在查询中加入了{term_node}表,所以我很确定你应该能够改变你的第一行来包括 99887666 。尝试:

  SELECT DISTINCT n.title, nr.teaser, n.nid, tn2.tid, DATE_FORMAT(FROM_UNIXTIME(n.created), '%M %e, %Y') AS date, f.filepath AS image, cfri.field_related_images_nid as image_id  FROM node n JOIN node_revisions nr ON n.nid = nr.nid  LEFT JOIN content_field_related_images cfri ON (n.nid = cfri.nid AND cfri.delta = 0)  LEFT JOIN content_field_att_file cfaf ON cfri.field_related_images_nid = cfaf.nid  LEFT JOIN files f ON cfaf.field_att_file_fid = f.fid   JOIN term_node tn2 ON n.nid = tn2.nid   WHERE n.status = 1 AND n.type = 'article'   AND nr.body LIKE '%kimberly-clark%' AND     tn2.tid = 143 ORDER BY n.created DESC LIMIT 3   
 

You already have the {term_node} table joined in your query so I'm pretty sure you should just be able to change your first line to include tn2.tid. Try this:

SELECT DISTINCT n.title, nr.teaser, n.nid, tn2.tid, DATE_FORMAT(FROM_UNIXTIME(n.created), '%M %e, %Y') AS date, f.filepath AS image, cfri.field_related_images_nid as image_id  FROM node n JOIN node_revisions nr ON n.nid = nr.nid  LEFT JOIN content_field_related_images cfri ON (n.nid = cfri.nid AND cfri.delta = 0)  LEFT JOIN content_field_att_file cfaf ON cfri.field_related_images_nid = cfaf.nid  LEFT JOIN files f ON cfaf.field_att_file_fid = f.fid   JOIN term_node tn2 ON n.nid = tn2.nid   WHERE n.status = 1 AND n.type = 'article'   AND nr.body LIKE '%kimberly-clark%' AND     tn2.tid = 143 ORDER BY n.created DESC LIMIT 3 
 
 

相关问题

0  在安装过程中,跳过“设置数据库”阶段。那是正常的吗?  ( During installation the set up database phase was skipped is that normal ) 
这不是我第一次在本地安装Drupal 7,但它是第一次在安装期间跳过"验证要求" 和"设置数据库" 阶段。 我确实设置了与站点相同的数据库(testsite.localhost和testsite2.localhost)。这就是为什么跳过这些步骤? 我确实看看phpmyadmin中的数据库,看起来这两个安装都被正确填...

1  如何使用hook_views_query_alter()添加SQL查询?  ( How do i add an sql query with hook views query alter ) 
我有以下SQL查询: db_query("SELECT content_id, COUNT(*) as count FROM {votingapi_vote} WHERE value_type = '%s' AND value = 1 GROUP BY content_i...

-2  如何将MySQL查询更改为Drupal查询?  ( How do i change a mysql query into a drupal query ) 
mysql_query("SELECT nid,title, type,created, v_api.ContentSum FROM `node` n LEFT JOIN ( SELECT content_id, SUM(CASE WHEN value=1 THE...

7  MySQL二进制日志使磁盘满  ( Mysql binary log makes disk full ) 
突然,我把我的网站下来了(drupal 6.19),无法启动mysql(太多表崩溃了)。 通过检查 df-h ,我发现由于非常大的二进制日志文件,MySQL分区已满(仅限二进制日志仅为一天, expire_logs_days = 1 );通过检查MySQlbinlog for the bin日志,我发现的大多数条目用...

5  由于LocalHost循环,登录失败。任何想法为什么?  ( Login fails due to loop on localhost any ideas why ) 
我有git克隆了一个站点并使用备份并迁移到将数据库带到本地主机上。 在远程主机上工作登录工作正常。不是在本地。我不再工作了大约一个小时我会说。 Firefox已检测到服务器以永不完整的方式重定向此地址的请求。 我已经清除了所有历史,尝试了不同的浏览器,并几次重新启动Apache。 任何想法? 编辑: 我可以安装...

2  将网站从SQLite转移到MySQL  ( Transfer a site from sqlite to mysql ) 
是否可以将我在本地开发的站点的内容与SQLite作为数据库进行,到实时站点,该数据库在完成时使用MySQL或PostgreSQL? 我不想在我的笔记本电脑上本地安装MySQL或PostgraySQL。 can backup_migrate 模块做到它或它导出原始mysql指令吗? ...

1  导出具有自定义字段的用户?  ( Export users with custom fields ) 
我需要设置在我们网站上注册的人的半正常导出。我们正在使用Drupal 7.我可以做一个简单的用户表导出,但这不包括我们添加的附加自定义字段。 在D7中有一个模块,请使用与这些记录关联的自定义字段一起处理将用户数据库导出? 如果没有,是否有一个简单的查询我可以做到识别运行时在注册过程关联的自定义字段?如果我的客户决定添...

13  DUST UP是否进行数据库备份/转储?  ( Does drush up do a database backup dump ) 
运行 drush up 运行数据库备份?从测试中,它看起来不是。如果我在运行 drush up 以更新之前,我应该在做一个单独的数据库备份吗? ...

1  条件()中$运算符的默认值是什么?  ( What is the default value for operator in condition ) 
查看 queryconditionInterface ::条件(),报告 $operation 的默认值是 NULL ,而条件条款报告默认值为 ~ all/modules/webform ~ all/modules/password_policy ~ all/modules/vie...

7  如何编写左左右查询?  ( How do i write a left join query ) 
我想得到知道节点ID的"vid" 的值,并为"vid" 等于2的行获取"名称" 的值。 如果它是一个简单的查询,我不知道如何写它;我不知道如何编写左边的加入查询。 Drupal中的"普通" SQL查询如下: $result = db_query('SELECT tid FROM {taxonomy_index}...

4  你可以批量启用评论吗?  ( Can you bulk enable comments ) 
我有一大堆节点(所有相同类型),我想打开对所有人的评论(客户端在添加所有数据后改变他们的思想)。 我找到了笔记,建议如果我做的那样: update node set comment = 2 where type = 'foo' 然后它应该对Foo类型的所有节点进行评论。但是,这似乎在Drupal 7中没有工...

2  直接修改数据库注销用户?  ( Logging out user by modifying database directly ) 
是有没有办法通过仅修改Drupal数据库来注销用户? ...

9  如何将数据库从MyISAM转换为InnoDB?  ( How do i convert a database from myisam to innodb ) 
我将从MyISAM转换为InnoDB的所有表500MB数据库,以了解它是否会提高繁忙的Drupal 6站点的整体性能。我想知道什么是最好的(最安全/最简单/最快)的转换方式。 ...

6  在Drupal 7中使用动态表达式更新查询?  ( Update query with a dynamic expression in drupal 7 ) 
game4 如何在1℃增加细胞? 抱歉我的英语不好 ...

12  是否将索引添加到Drupal数据库安全?  ( Is adding indexes to a drupal database safe ) 
我一直在搜索和阅读这一点,但我没有看到任何关于将索引添加到Drupal表(核心和Contract)的主题的最终。 我的主要关注是在更新核心或Contrib码时,任何自定义索引会发生什么,并且有架构更改。在这种情况下会发生什么? 编辑: 我认为有些背景可能有所帮助。我主要关注将索引添加到表来调整站点性能(在慢查询日志中...

8  PHP5令人厌恶的过渡计划  ( Transition plan for php5 abomination to drupal ) 
背景 从现在开始的一年,我的客户将港口港口港口(调度,实际跟踪和报告等),因为总部说这么做。很少努力确定这是否是正确的技术选择,超出了对客户甚至是他们的老板的控制。 当前门户是一种憎恶,即在重新考虑的过程中,我认为最具成本效益的计划是通过学说2带来域模型层,并将99.9%的所有商业&amp汇总;输入验证逻辑进入模型,...

1  将内容添加到Drupal数据库  ( Adding content to drupal database ) 
我正在运行一个相当大的drupal 6站点,我需要在数据库中包含其他信息,独立于drupal运行的东西。最好创建一个单独的数据库并从我需要访问信息的文件中连接到它,或者只是安全地将自定义表添加到Drupal数据库,并在那里添加任何我想要的东西? 谢谢! ...

3  是Drupal 4.7与MySQL 5.1和PHP 5.3兼容  ( Is drupal 4 7 compatible with mysql 5 1 and php 5 3 ) 
我在我的本地机器上有一些奇怪的问题4.7.11。在我进入之前,我应该给你一些背景。我正在运行php 5.3.4和mysql 5.1.54。 如果我尝试运行drupal 4.7没有任何DB信息,它会达到一个屏幕,要求我放入DB Connect Info。一旦我这样做,我在浏览器中获得一个白色屏幕,终端运行cron.ph...

8  如何从MySQL迁移到PostgreSQL  ( How to migrate from mysql to postgresql ) 
我需要知道如何将我的drupal 6数据库从mysql迁移到postgreSQL。我也喜欢听到关于实际迁移的第一手体验故事。 p.s。我找到了这个 drupal-mysql2pgsql.pl迁移脚本,显然是工作,但我无法使用因为我不知道如何在两个数据库中懂得无密码帐户"。还有本指南(在泰语中),它将凭据添加到数据...

3  db_select()返回一个数组  ( Db select returns an array ) 
我刚刚开始使用drupal 7和 db_select() 。 如果我有 db_select() (例如 99887663 ,为什么我只能循环一次? 它看起来好像有一个游标在foreach循环后未重置。 所以我试图找到一个将此结果转换为多维数组的函数(例如 99887664 ),但我没有找到任何东西。 而是,在我必须循...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.