2014-03-31 101 views
0

我有以下查询要在联系人模块中实现。自定义列表查看联系人模块中的查询

SELECT DISTINCT bean_id FROM `email_addr_bean_rel` as a, 
(select S.email_address_id from contacts R 
INNER JOIN email_addr_bean_rel S ON R.id = S.bean_id 
and S.bean_module='contacts' and S.deleted=0 
group by S.email_address_id 
having count(S.email_address_id)>1) as Dup 
where Dup.email_address_id=a.email_address_id 
and a.bean_module='contacts' and a.deleted=0 

我怎样custom_from,custom_select实现这个或custom_where

回答

0

量变到质变的查询的WHERE子句是很容易的,但如果你想改变选择和这是一个更大的问题。

两种方式来实现这一目标是:

1)创建一个Contact.php create_new_list_query()函数(模块核心类)

function create_new_list_query() 
{  

    $return_array = Array(); 

    $return_array['select'] = "SELECT DISTINCT bean_id "; 
    $return_array['from'] = " FROM `email_addr_bean_rel` as a, (select .email_address_id from contacts R INNER JOIN email_addr_bean_rel S ON R.id = S.bean_id and S.bean_module='contacts' and S.deleted=0 group by S.email_address_id having count(S.email_address_id)>1) as Dup ";        
    $return_array['where'] = " where Dup.email_address_id=a.email_address_id and a.bean_module='contacts' and a.deleted=0 ";  
    $return_array['order_by'] = ""; 

    return $return_array['select'] . $return_array['from'] . $return_array['where']. $return_array['order_by']; 

} 

您可以将它们添加到选择的显示领域select和listviewdefs.php

$listViewDefs ['Contacts'] = 
    array (
     'bean_id' => array (
      'width' => '15%', 
      'label' => 'LBL_ID', 
      'default' => true, 
    ), 

);

当心这种行为将严重改变你的联系人模块,如果你愿意,你原来的行为事后

2回还原所有更改)的更好的方式是创建一个自定义模块,同样的变化:1)

相关问题