Drupal:MySQL选择属于特定论坛的所有帖子

时间:2015-07-04 12:54:52

标签: mysql drupal phpmyadmin drupal-7

我需要选择在Drupal中的特定类别(论坛)数组中发布的所有消息(第一篇帖子和回复)。

首批帖子存储在field_data_body中,回复存储在field_data_comment_body

field_data_bodyfield_data_comment_body的结构相同,在body_value列中,帖子的内容以及entity_id列中的唯一内容ID。

表格field_data_taxonomy_forums包含entity_id列和taxonomy_forums_tid列(论坛类别的ID)。表格taxonomy_term_data包含tid列(与taxonomy_forums_tiddescription列相同的列(论坛类别的标题)。

所以,我正在寻找一个查询,允许我选择帖子的主体(首先发布帖子和回复)以及论坛的描述,指定tid s的数组(即我将在taxonomy_term_data表格中手动查找论坛类别的ID。

所以,例如,我正在寻找允许我选择帖子"属于"的查询。到tid s 1456,7622,862以及相对tid说明。

这是field_data_body表的屏幕截图: enter image description here

2 个答案:

答案 0 :(得分:5)

我认为,将任务分成两个子任务会更好:

  1. 查找属于特定tid的帖子正文。
  2. 查找身体的所有评论,属于特定的tid。
  3. 我们需要使用这些表格:

    1. field_data_taxonomy_forums
    2. field_data_body
    3. 评论
    4. field_data_comment_body
    5. 数据库结构:

      Database structure

      查找正文

      SELECT
          taxonomy_forums.taxonomy_forums_tid AS tid,
          body.entity_id,
          body.body_value AS body
      FROM
          field_data_taxonomy_forums AS taxonomy_forums
      INNER JOIN
          field_data_body AS body
      ON
          body.entity_id=taxonomy_forums.entity_id
      WHERE
          taxonomy_forums.taxonomy_forums_tid IN (9);
      

      查找正文的评论

      此处我们需要一个评论表,它将field_data_bodyfield_data_comment_body结合在一起。

      SELECT
          taxonomy_forums.taxonomy_forums_tid AS tid,
          comment_body.entity_id,
          comment_body.comment_body_value AS body
      FROM
          field_data_taxonomy_forums AS taxonomy_forums
      INNER JOIN
          field_data_body AS body
      ON
          body.entity_id=taxonomy_forums.entity_id
      INNER JOIN
          comment
      ON
          comment.nid=body.entity_id
      INNER JOIN
          field_data_comment_body AS comment_body
      ON
          comment_body.entity_id=comment.cid
      WHERE
          taxonomy_forums.taxonomy_forums_tid IN (9);
      

      如果您对这两个查询进行联合,您将获得帖子和评论列表。

      sqlfiddle

答案 1 :(得分:2)

要查找对论坛ID的引用,您必须添加使用"论坛" table(建立节点与论坛术语关系的表。) 另外应该注意的是,论坛ID不存在,它是一个分类标识。 以下是按分类标识(tid)

仅获取第一个消息主题的示例
SELECT * FROM field_data_body fdb
LEFT JOIN forum f ON f.nid = fdb.entity_id
WHERE fdb.bundle="forum" AND f.tid=15

请注意,论坛模块与评论核心模块配合使用,这意味着只有第一个主题消息存储在" field_data_body"并且所有回复都存储在" field_data_comment_body"表

希望有所帮助