ensure_my_table(); // The base table in chado $base_table = $this->definition['base table']; $base_field = $this->definition['base field']; // The drupal linking table $chado_table = 'chado_' . $base_table; // Need to remove the incorrectly added node & chado_table join unset($this->query->table_queue['node'], $this->query->tables['stock']['node'], $this->query->table_queue[$chado_table], $this->query->tables['stock'][$chado_table]); // First add base => chado_base join $def = array(); $def['table'] = $chado_table; $def['field'] = $base_field; $def['left_table'] = $base_table; $def['left_field'] = $base_field; //$def['handler'] = 'views_handler_join_chado_aggregator'; $join = new views_join(); $join->definition = $def; $join->construct(); $join->adjusted = TRUE; $alias = $base_table . '_' . $chado_table; $this->linker_alias = $this->query->add_relationship($alias, $join, $this->table); // Now add chado_base => node join $def = array(); $def['table'] = 'node'; $def['field'] = 'nid'; $def['left_table'] = $this->linker_alias; $def['left_field'] = 'nid'; //$def['handler'] = 'views_handler_join_chado_aggregator'; $join = new views_join(); $join->definition = $def; $join->construct(); $join->adjusted = TRUE; if ($base_table == $this->view->base_table) { $alias = 'node'; } else { $alias = $chado_table . '_node'; } $this->alias = $this->query->add_relationship($alias, $join, 'node'); } }