Hi

Reading Describing tables to Views, I want to understand of the utility of the join attribute.

When describing a view using hook_views_data(), can I define a view that is an INNER JOIN between two tables? If so, then how?

For example, let us say I want to define a view through hook_views_data() that is a join between two simple tables location and region.

TABLE location has a region_id value, and TABLE region has an associated region_name for every region_id.

What I want to know is if I can add the INNER JOIN relation to this view by showing region.region_name instead of location.region_id.

After I had defined a join relation within TABLE location: $data['location']['table']['join']['region'], I thought maybe is would see something dealing with this defined Relationship within /admin/build/views/edit/ for a view created with Location fields, but I did not.

hook_views_data() implementation of TABLE location. In this implementation, :

function location_views_data() {
  $data['location']['table']['group'] = t('group_Locations');

  $data['location']['table']['base'] =  array(
          'field' => 'location_id',
          'title' => t("Locations"),
          'help'  => t("Locations that are associated with Projects."),
          'weight' => -10,
        );
        
  $data['location']['table']['join']['region'] = array(
	  'left_field' => 'region_id',
	  'field' => 'region_id',
	);
      
  $data['location']['location_name'] = array(
        'title' => t('Location Name'),
        'help' => t('Location Name requires to be Unique.'),
        'field' => array(
          'handler' => 'views_handler_field',
          'click sortable' => TRUE,
        ),
        'sort' => array(
          'handler' => 'views_handler_sort',
        ),
        'filter' => array(
          'handler' => 'views_handler_filter_string',
        ),
        'argument' => array(
          'handler' => 'views_handler_argument_string',
        ),
      );
            
  $data['location']['region_id'] = array(
        'title' => t('Region ID'),
        'help' => t('Auto-Assigned ID from Region'),
        'field' => array(
          'handler' => 'views_handler_field_numeric',
          'click sortable' => TRUE,
         ),
        'filter' => array(
          'handler' => 'views_handler_filter_numeric',
        ),
        'sort' => array(
          'handler' => 'views_handler_sort',
        ),
      );
     
  return $data;
}

This is the hook_views_data() implementation of TABLE region:

function region_views_data() {
  $data['region']['table']['group'] = t('group_Regions');

  $data['region']['table']['base'] =  array(
          'field' => 'region_id',
          'title' => t("Regions"),
          'help'  => t("Regions that are associated with Locations."),
          'weight' => -10,
        );
      
  $data['region']['region_id'] = array(
        'title' => t('Region ID'),
        'help' => t('Auto-Assigned ID'),
        'field' => array(
          'handler' => 'views_handler_field_numeric',
          'click sortable' => TRUE,
         ),
        'filter' => array(
          'handler' => 'views_handler_filter_numeric',
        ),
        'sort' => array(
          'handler' => 'views_handler_sort',
        ),
      );
      
  $data['region']['region_name'] = array(
        'title' => t('Region Name'),
        'help' => t('Region Name requires to be Unique.'),
        'field' => array(
          'handler' => 'views_handler_field',
          'click sortable' => TRUE,
        ),
        'sort' => array(
          'handler' => 'views_handler_sort',
        ),
        'filter' => array(
          'handler' => 'views_handler_filter_string',
        ),
        'argument' => array(
          'handler' => 'views_handler_argument_string',
        ),
      );
     
  return $data;
}

Am I off course with this understanding with hook_views_data()?

Thanks

Jeff in Seattle