2014-03-25 69 views
-1

有没有办法为我创建一个来自两个MySQL查询的Drupal视图。我想创建一个事件视图一个MySQL查询用于将已启动的事件并没有完成,另一个查询是提出尚未开始的事件,并总共显示3个项目。有没有办法从sql查询中创建Drupal视图

下面是两个SQL查询我想创建从视图:

SELECT f.delta  AS field_data_field_session_start_date_delta 
    , f.entity_id AS date_id_date_filter 
    , f.delta  AS date_delta_date_filter 
    , n.title  AS node_title 
    , n.nid  AS nid 
    , n.language AS node_language 
    , f.field_session_start_date_value AS field_data_field_session_start_date_field_session_start_date 
    , f.field_session_start_date_value2 AS field_data_field_session_start_date_field_session_start_date2 
    , 'node'  AS field_data_field_session_start_date_node_entity_type 
    FROM `node` n 
    JOIN `field_data_field_session_start_date` f 
    ON f.entity_id = n.nid 
    AND f.entity_type = 'node' 
    AND f.deleted = '0' 
    AND f.field_session_start_date_value >= NOW() 
WHERE n.status = '1' 
ORDER 
    BY f.field_session_start_date_value ASC 
LIMIT 3 OFFSET 0 


SELECT f.delta  AS field_data_field_session_start_date_delta 
    , f.entity_id AS date_id_date_filter 
    , f.delta  AS date_delta_date_filter 
    , n.title  AS node_title 
    , n.nid  AS nid 
    , n.language AS node_language 
    , f.field_session_start_date_value AS field_data_field_session_start_date_field_session_start_date 
    , f.field_session_start_date_value2 AS field_data_field_session_start_date_field_session_start_date2 
    , 'node'  AS field_data_field_session_start_date_node_entity_type 
    FROM `node` n 
    JOIN `field_data_field_session_start_date` f 
    ON f.entity_id = n.nid 
    AND f.entity_type = 'node' 
    AND f.deleted = '0' 
    AND f.field_session_start_date_value <= NOW() 
    AND f.field_session_start_date_value2 > NOW() 
WHERE n.status = '1' 
ORDER 
    BY f.field_session_start_date_value ASC 
LIMIT 3 OFFSET 0 

回答

1

我假设你知道如何从原始SQL创建Drupal的观点 - 即只是那些查询之一。

可以使用UNION命令创建1个查询,返回两个查询的结果(在你的情况,换两个查询在括号中,以确保ORDER BY和LIMIT与内查询相关):

(SELECT f.delta  AS field_data_field_session_start_date_delta 
    , f.entity_id AS date_id_date_filter 
    , f.delta  AS date_delta_date_filter 
    , n.title  AS node_title 
    , n.nid  AS nid 
    , n.language AS node_language 
    , f.field_session_start_date_value AS field_data_field_session_start_date_field_session_start_date 
    , f.field_session_start_date_value2 AS field_data_field_session_start_date_field_session_start_date2 
    , 'node'  AS field_data_field_session_start_date_node_entity_type 
    FROM `node` n 
    JOIN `field_data_field_session_start_date` f 
    ON f.entity_id = n.nid 
    AND f.entity_type = 'node' 
    AND f.deleted = '0' 
    AND f.field_session_start_date_value >= NOW() 
WHERE n.status = '1' 
ORDER 
    BY f.field_session_start_date_value ASC 
LIMIT 3 OFFSET 0) 
UNION 
(SELECT f.delta  AS field_data_field_session_start_date_delta 
    , f.entity_id AS date_id_date_filter 
    , f.delta  AS date_delta_date_filter 
    , n.title  AS node_title 
    , n.nid  AS nid 
    , n.language AS node_language 
    , f.field_session_start_date_value AS field_data_field_session_start_date_field_session_start_date 
    , f.field_session_start_date_value2 AS field_data_field_session_start_date_field_session_start_date2 
    , 'node'  AS field_data_field_session_start_date_node_entity_type 
    FROM `node` n 
    JOIN `field_data_field_session_start_date` f 
    ON f.entity_id = n.nid 
    AND f.entity_type = 'node' 
    AND f.deleted = '0' 
    AND f.field_session_start_date_value <= NOW() 
    AND f.field_session_start_date_value2 > NOW() 
WHERE n.status = '1' 
ORDER 
    BY f.field_session_start_date_value ASC 
LIMIT 3 OFFSET 0) 
相关问题