我需要选择在Drupal中的特定类别(论坛)数组中发布的所有消息(第一篇帖子和回复)。
首批帖子存储在field_data_body
中,回复存储在field_data_comment_body
。
field_data_body
和field_data_comment_body
的结构相同,在body_value
列中,帖子的内容以及entity_id
列中的唯一内容ID。
表格field_data_taxonomy_forums
包含entity_id
列和taxonomy_forums_tid
列(论坛类别的ID)。表格taxonomy_term_data
包含tid
列(与taxonomy_forums_tid
和description
列相同的列(论坛类别的标题)。
所以,我正在寻找一个查询,允许我选择帖子的主体(首先发布帖子和回复)以及论坛的描述,指定tid
s的数组(即我将在taxonomy_term_data
表格中手动查找论坛类别的ID。
所以,例如,我正在寻找允许我选择帖子"属于"的查询。到tid
s 1456,7622,862
以及相对tid
说明。
这是field_data_body
表的屏幕截图:
答案 0 :(得分:5)
我认为,将任务分成两个子任务会更好:
我们需要使用这些表格:
数据库结构:
查找正文
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_body
和field_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);
如果您对这两个查询进行联合,您将获得帖子和评论列表。
答案 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"表
希望有所帮助