将视图查询转为mysql查询

问题描述 投票:0回答:1

使用views raw sql模块,我得到了一个视图:但是当我直接在mysql中运行查询时,应该如何转换,以便能够得到结果? {}代表什么? 我不明白应该如何改变查询,以便能够在mysql中得到结果。我的最终目标是将所有的左联接替换成内联接,这样可以提高速度,如这里所说。https:/www.silviogutierrez.comblogoptimizing-drupal-views-right-way所以我有两个问题,我应该如何改变下面的sql查询在mysql中运行,以及我如何使所有左联接下面的内部联接。

SELECT  node.nid AS nid, node.language AS node_language, node_field_data_field_title.title AS node_field_data_field_title_title,
        node.nid AS node_nid, 'node' AS field_data_field_circ_type_node_entity_type,
        'node' AS field_data_field_circ_period_node_entity_type,
        'node' AS field_data_field_active_node_entity_type, 'node' AS field_data_field_onhold_node_entity_type,
        'node' AS field_data_field_item_node_entity_type, 'node' AS field_data_field_patron_node_entity_type,
        'node' AS field_data_field_due_date_node_entity_typeFROM {node} nodeLEFT
    JOIN  {field_data_field_item} field_data_field_item  ON node.nid = field_data_field_item.entity_id
      AND  (field_data_field_item.entity_type = 'node'
              AND  field_data_field_item.deleted = '0'
           )LEFT
    JOIN  {node} node_field_data_field_item  ON field_data_field_item.field_item_nid = node_field_data_field_item.nidLEFT
    JOIN  {field_data_field_patron} field_data_field_patron  ON node.nid = field_data_field_patron.entity_id
      AND  (field_data_field_patron.entity_type = 'node'
              AND  field_data_field_patron.deleted = '0'
           )LEFT
    JOIN  {node} node_field_data_field_patron  ON field_data_field_patron.field_patron_nid = node_field_data_field_patron.nidLEFT
    JOIN  {og_membership} og_membership_node  ON node.nid = og_membership_node.etid
      AND  (og_membership_node.entity_type = 'node')LEFT
    JOIN  {field_data_field_title} node_field_data_field_item__field_data_field_title  ON node_field_data_field_item.nid = node_field_data_field_item__field_data_field_title.entity_id
      AND  (node_field_data_field_item__field_data_field_title.entity_type = 'node'
              AND  node_field_data_field_item__field_data_field_title.deleted = '0'
           )LEFT
    JOIN  {node} node_field_data_field_title  ON node_field_data_field_item__field_data_field_title.field_title_nid = node_field_data_field_title.nidWHERE (( (og_membership_node.gid = '672621' ) )AND(( (node.status = '1')
                              AND  (node.type IN ('circulation')) ))
                          )ORDER BY node_nid DESC LIMIT 20 OFFSET 0
mysql drupal
1个回答
1
投票

你所需要的一切在Drupal文档中都有描述。https:/www.drupal.orgdocs7apidatabase-apistatic-queries

本网站的例子。

$result = db_query("SELECT nid, title FROM {node} WHERE created > :created", array(
  ':created' => REQUEST_TIME - 3600,
));

在这个例子中,{node}通过添加后缀转化为真正的表名,例如,同样的规则适用于其他元素。

© www.soinside.com 2019 - 2024. All rights reserved.