Results 1 to 6 of 6

Thread: list view generated wrong query

  1. #1
    madhrishi is offline Senior Member
    Join Date
    Feb 2009
    Posts
    99

    Default list view generated wrong query

    Hi,

    I have one - many relationship with Contacts and custom module - Donations, created through studio. Contacts is the primary module. I had added Contact's relate field to Donations basic search. When i select a 'Contact' from Donations search, list view generates wrong query..

    LEFT JOIN contacts jt0 ON jt0.id=jtl0.contacts_ib52bontacts_ida AND jt0.deleted=0
    AND jt0.deleted=0 LEFT JOIN users jt1 ON
    jt1.id= ishad_moredonations.assigned_user_id AND jt1.deleted=0
    AND jt1.deleted=0 where ((jt0.name like '%test%' ) AND ( ishad_moredonations.contacts_ib52bontacts_ida like '%e6cca634-ca72-cd7b-7c31-4a66f609f9e8%')) AND ishad_moredonations.deleted=0 Start: 0 count: 21
    Mon Jul 27 17:27:18 2009 [14378][1][INFO] Query: SELECT ishad_moredonations.id ,ishad_moredonations_cstm.donationpurposenew_c,ish ad_moredonations_cstm.materiallistnew_c,ishad_more donations_cstm.donationdatenew_c, ishad_moredonations.cash , ishad_moredonations.material , ishad_moredonations.amount , ishad_moredonations.donationoccasion , CONCAT(IFNULL(jt0.first_name,''),' ',IFNULL(jt0.last_name,'')) contacts_ishad_moredonations_name, jtl0.contacts_ib52bontacts_ida contacts_ib52bontacts_ida , jt1.user_name assigned_user_name , jt1.created_by assigned_user_name_owner , 'Users' assigned_user_name_mod, ishad_moredonations.assigned_user_id FROM ishad_moredonations LEFT JOIN ishad_moredonations_cstm ON ishad_moredonations.id = ishad_moredonations_cstm.id_c LEFT JOIN contacts_isoredonations_c jtl0 ON ishad_moredonations.id=jtl0.contacts_i7596nations_ idb AND jtl0.deleted=0
    LEFT JOIN contacts jt0 ON jt0.id=jtl0.contacts_ib52bontacts_ida AND jt0.deleted=0
    AND jt0.deleted=0 LEFT JOIN users jt1 ON
    jt1.id= ishad_moredonations.assigned_user_id AND jt1.deleted=0
    AND jt1.deleted=0 where ((jt0.name like '%test%' ) AND ( ishad_moredonations.contacts_ib52bontacts_ida like '%e6cca634-ca72-cd7b-7c31-4a66f609f9e8%')) AND ishad_moredonations.deleted=0 LIMIT 0,21
    Mon Jul 27 17:27:18 2009 [14378][1][INFO] Query Execution Time:0.000302076339722
    Mon Jul 27 17:27:18 2009 [14378][1][ERROR] MySQL error 1054: Unknown column 'jt0.name' in 'where clause'
    I added
    Code:
    "array('query_type'=>'default','db_field'=>array('contacts.first_name', 'contacts.last_name')),  "
    to donations SearchFields.php, yet no luck...

    Any help?

  2. #2
    andopes's Avatar
    andopes is offline A Sugar Hero | Help Forum Moderator
    Join Date
    Jul 2006
    Location
    São Paulo - Brazil
    Posts
    8,335

    Default Re: list view generated wrong query

    The field name does not exist on contacts table, so you should need to edit the extended vardefs of Donation to modify the rname value from 'name' to either 'first_name' or 'last_name'.
    But I believe you have discovered a minor bug on Sugar: Relate field to Person module does not work on Search Form of child module.

    I'm going to take a look at this issue.

    Best regards
    André Lopes
    DevToolKit / Project of the Month - June 2009
    Lampada Global Services- Open Source Solutions
    Avenida Ipiranga, 318
    Bloco B - CJ 1602
    São Paulo, SP 01046-010
    Brazil
    Office: +55 11 3237-3110
    Mobile: +55 11 7636-5859
    e-mail: andre@lampadaglobal.com

    Lampada Global delivers offshore software development and support services to customers around the world.
    Lampada is proud to be a SugarCRM Gold Partner, revolutionizing Customer Relationship Management.

    I DO NOT answer questions through PM and Email. If you need some help post your question into SugarForum.

  3. #3
    madhrishi is offline Senior Member
    Join Date
    Feb 2009
    Posts
    99

    Default Re: list view generated wrong query

    Thank You Andopes,

    After making above said changes, i am getting this error now...

    Query: SELECT ishad_moredonations.id ,ishad_moredonations_cstm.donationoc_c,CONCAT(IFNU LL(jt0.first_name,''),' ',IFNULL(jt0.last_name,'')) contacts_ishad_moredonations_name, jtl0.contacts_ib52bontacts_ida contacts_ib52bontacts_ida , jt1.user_name assigned_user_name , jt1.created_by assigned_user_name_owner , 'Users' assigned_user_name_mod, ishad_moredonations.assigned_user_id
    FROM ishad_moredonations
    LEFT JOIN ishad_moredonations_cstm ON ishad_moredonations.id = ishad_moredonations_cstm.id_c
    LEFT JOIN contacts_isoredonations_c jtl0 ON ishad_moredonations.id=jtl0.contacts_i7596nations_ idb AND jtl0.deleted=0
    LEFT JOIN contacts jt0 ON jt0.id=jtl0.contacts_ib52bontacts_ida AND jt0.deleted=0 AND jt0.deleted=0
    LEFT JOIN users jt1 ON jt1.id= ishad_moredonations.assigned_user_id AND jt1.deleted=0 AND jt1.deleted=0
    where ((jt0.first_name like '%Arulselvi%' ) AND ( ishad_moredonations.contacts_ib52bontacts_ida like '%6083b31d-ecb7-d3e7-95c7-4a6adad4293c%')) AND ishad_moredonations.deleted=0 ORDER BY donationdatenew_c ASC LIMIT 0,21
    Wed Jul 29 13:05:26 2009 [21717][1][INFO] Query Execution Time:0.000290155410767
    Wed Jul 29 13:05:26 2009 [21717][1][ERROR] MySQL error 1054: Unknown column 'ishad_moredonations.contacts_ib52bontacts_ida' in 'where clause'
    shouldnt it be looking for contacts_ib52bontacts_ida @ jtl0 ??

    extended vardefs contents :

    Code:
    <?php
    // created: 2009-07-21 12:11:42
    $dictionary["IshaD_MoreDonations"]["fields"]["contacts_ishad_moredonations"] = array (
      'name' => 'contacts_ishad_moredonations',
      'type' => 'link',
      'relationship' => 'contacts_ishad_moredonations',
      'source' => 'non-db',
      'side' => 'right',
    );
    ?>
    <?php
    // created: 2009-07-21 12:11:42
    $dictionary["IshaD_MoreDonations"]["fields"]["contacts_ishad_moredonations_name"] = array (
      'name' => 'contacts_ishad_moredonations_name',
      'type' => 'relate',
      'source' => 'non-db',
      'vname' => 'LBL_CONTACTS_ISHAD_MOREDONATIONS_FROM_CONTACTS_TITLE',
      'save' => true,
      'id_name' => 'contacts_ib52bontacts_ida',
      'link' => 'contacts_ishad_moredonations',
      'table' => 'contacts',
      'module' => 'Contacts',
      'rname' => 'first_name',
      'db_concat_fields' => 
      array (
        0 => 'first_name',
        1 => 'last_name',
      ),
    );
    ?>
    <?php
    // created: 2009-07-21 12:11:42
    $dictionary["IshaD_MoreDonations"]["fields"]["contacts_ib52bontacts_ida"] = array (
      'name' => 'contacts_ib52bontacts_ida',
      'type' => 'link',
      'relationship' => 'contacts_ishad_moredonations',
      'source' => 'non-db',
      'side' => 'right',
    );
    ?>

  4. #4
    madhrishi is offline Senior Member
    Join Date
    Feb 2009
    Posts
    99

    Default Re: list view generated wrong query

    Hi Andopes,

    Any updates on this?? What more changes should i do to get this working? kindly help...

    Thanks.

  5. #5
    andopes's Avatar
    andopes is offline A Sugar Hero | Help Forum Moderator
    Join Date
    Jul 2006
    Location
    São Paulo - Brazil
    Posts
    8,335

    Default Re: list view generated wrong query

    Hi madhrishi

    Unfortunately not!
    I'll not be able to focus on this issue until weekend.

    Regards
    André Lopes
    DevToolKit / Project of the Month - June 2009
    Lampada Global Services- Open Source Solutions
    Avenida Ipiranga, 318
    Bloco B - CJ 1602
    São Paulo, SP 01046-010
    Brazil
    Office: +55 11 3237-3110
    Mobile: +55 11 7636-5859
    e-mail: andre@lampadaglobal.com

    Lampada Global delivers offshore software development and support services to customers around the world.
    Lampada is proud to be a SugarCRM Gold Partner, revolutionizing Customer Relationship Management.

    I DO NOT answer questions through PM and Email. If you need some help post your question into SugarForum.

  6. #6
    orion24_leads is offline Junior Member
    Join Date
    Sep 2011
    Posts
    2

    Default Re: list view generated wrong query

    I am having the same problem. Was a solution found for this?

    I think some of the vardefs for this Module may be incorrect because I had some difficulty getting the relate type to work but here is what I ended up using.

    PHP Code:

    // Note: I have narrowed this list down
    $dictionary['my_User_Reports'] = array(
    'fields'=>array (
      
    'direction' => 
      array (
        
    'required' => false,
        
    'name' => 'direction',
        
    'vname' => 'LBL_DIRECTION',
        
    'type' => 'enum',
        
    'massupdate' => 0,
        
    'default' => 'Initial Caller',
        
    'comments' => '',
        
    'help' => '',
        
    'importable' => 'true',
        
    'duplicate_merge' => 'disabled',
        
    'duplicate_merge_dom_value' => '0',
        
    'audited' => false,
        
    'reportable' => true,
        
    'len' => 100,
        
    'size' => '20',
        
    'options' => 'call_contact_direction_list',
        
    'studio' => 'visible',
        
    'dependency' => false,
      ),
      
    'my_users_id_c' => 
      array (
        
    'required' => false,
        
    'name' => 'my_users_id_c',
        
    'vname' => '',
        
    'type' => 'id',
        
    'massupdate' => 0,
        
    'comments' => '',
        
    'help' => '',
        
    'importable' => 'true',
        
    'duplicate_merge' => 'disabled',
        
    'duplicate_merge_dom_value' => 0,
        
    'audited' => false,
        
    'reportable' => true,
        
    'len' => 36,
        
    'size' => '20',
      ),
      
    'my_user' => 
      array (
        
    'required' => false,
        
    'source' => 'non-db',
        
    'name' => 'my_user',
        
    'vname' => 'LBL_MY_USER',
        
    'type' => 'relate'// relate type
        
    'massupdate' => 0,
        
    'comments' => '',
        
    'help' => '',
        
    'importable' => 'true',
        
    'duplicate_merge' => 'disabled',
        
    'duplicate_merge_dom_value' => '0',
        
    'audited' => false,
        
    'reportable' => true,
        
    'len' => '255',
        
    'size' => '20',
        
    'id_name' => 'my_users_id_c'// link with my_users_id_c
        
    'ext2' => 'my_Users'// Not sure what this does
        
    'module' => 'my_Users'// Module to link to
        
    'rname' => 'name'// Not sure what this does
        
    'quicksearch' => 'enabled',
        
    'studio' => 'visible',
      )
    ); 
    Code:
    -- This is the query that is being generated by sugar
    SELECT  my_user_reports.id , my_user_reports.name , jt0.name my_user , my_user_reports.direction , 
    my_user_reports.status , TRIM(CONCAT(IFNULL(jt1.first_name,''),' ',IFNULL(jt1.last_name,''))) 
    contact_id , my_user_reports.phone , my_user_reports.appointment_date , jt2.name appointment_with , 
    my_user_reports.date_entered ,  my_user_reports.assigned_user_id  
    FROM my_user_reports  
    LEFT JOIN my_users jt0 ON my_user_reports.my_user_id_c = jt0.id AND jt0.deleted=0  
    LEFT JOIN contacts jt1 ON my_user_reports.contact_id_c = jt1.id AND jt1.deleted=0  
    LEFT JOIN my_users jt2 ON my_user_reports.my_user_id1_c = jt2.id AND jt2.deleted=0  
    WHERE ((jt0.name_reports.direction IN ('Recruiter'))) 
    AND my_user_reports.deleted=0 
    ORDER BY my_user_reports.name ASC;
    
    -- The problem is in the where - this is what it should be
    WHERE ((my_user_reports.direction IN ('Recruiter'))) 
    AND my_user_reports.deleted=0 
    ORDER BY my_user_reports.name ASC;
    The problem is occurring within the where during the preg_replace on line 3118 of [sugarcrm]/data/SugarBean.php

    my_user_reports.direction is getting changed to jt0.name_reports.direction

    PHP Code:

    // Here is the if statement
    if ($data['type'] == 'relate' && (isset($data['custom_module']) || isset($data['ext2']))) {
                    
    $joinTableAlias 'jt' $jtcount;
                    
    $relateJoinInfo $this->custom_fields->getRelateJoin($data$joinTableAlias);
                    
    $ret_array['select'] .= $relateJoinInfo['select'];
                    
    $ret_array['from'] .= $relateJoinInfo['from'];
                    
    //Replace any references to the relationship in the where clause with the new alias
                    //If the link isn't set, assume that search used the local table for the field
                    
    $searchTable = isset($data['link']) ? $relateJoinInfo['rel_table'] : $this->table_name;
                    
    $field_name $relateJoinInfo['rel_table'] . '.' . !empty($data['name'])?$data['name']:'name';
                    
    $where preg_replace('/(^|[\s(])' $field_name '/' '${1}' $relateJoinInfo['name_field'], $where); // problem occurs here
                    
    $jtcount++;
                } 

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 3
    Last Post: 2009-03-27, 02:49 PM
  2. Meeting/Call list view SQL query
    By mooky in forum Developer Help
    Replies: 0
    Last Post: 2008-12-28, 10:57 PM
  3. wrong module - MVC problem in view.list.php
    By dricrm in forum Developer Help
    Replies: 0
    Last Post: 2008-01-14, 11:04 AM
  4. Wrong info on contact's list view
    By dimitrisp in forum Help
    Replies: 2
    Last Post: 2006-06-28, 10:56 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •