Hi, so I'm trying to add the term_node table to a view within views_query_alter(). If I add a taxonomy Term TID within the Views UI, the $query structure includes 'type' => INNER for the term_node table. Whereas when I programmatically add the table with add_table() the 'type' is set to LEFT. I'm out of ideas...

Example outputs below:

$query output after adding Term TID filter via views UI:

views_query Object
(
    [table_queue] => Array
        (
            [node] => Array
                (
                    [alias] => node
                    [table] => node
                    [relationship] => node
                    [join] => 
                )
            [uc_product_stock] => Array
                (
                    [table] => uc_product_stock
                    [num] => 1
                    [alias] => uc_product_stock
                    [join] => views_join Object
                        (
                            [definition] => Array
                                (
                                    [left_field] => nid
                                    [field] => nid
                                    [table] => uc_product_stock
                                    [left_table] => node
                                )
                            [extra_type] => AND
                            [table] => uc_product_stock
                            [left_table] => node
                            [left_field] => nid
                            [field] => nid
                            [type] => LEFT
                            [adjusted] => 1
                        )
                    [relationship] => node
                )
            [node_data_field_preorder] => Array
                (
                    [table] => node_data_field_preorder
                    [num] => 1
                    [alias] => node_data_field_preorder
                    [join] => views_join Object
                        (
                            [definition] => Array
                                (
                                    [table] => content_type_product
                                    [left_field] => vid
                                    [field] => vid
                                    [left_table] => node
                                )
                            [extra_type] => AND
                            [table] => content_type_product
                            [left_table] => node
                            [left_field] => vid
                            [field] => vid
                            [type] => LEFT
                            [adjusted] => 1
                        )
                    [relationship] => node
                )
            [node_counter] => Array
                (
                    [table] => node_counter
                    [num] => 1
                    [alias] => node_counter
                    [join] => views_join Object
                        (
                            [definition] => Array
                                (
                                    [left_field] => nid
                                    [field] => nid
                                    [table] => node_counter
                                    [left_table] => node
                                )
                            [extra_type] => AND
                            [table] => node_counter
                            [left_table] => node
                            [left_field] => nid
                            [field] => nid
                            [type] => LEFT
                            [adjusted] => 1
                        )
                    [relationship] => node
                )
            [term_node] => Array
                (
                    [table] => term_node
                    [num] => 1
                    [alias] => term_node
                    [join] => views_join Object
                        (
                            [definition] => Array
                                (
                                    [left_field] => vid
                                    [field] => vid
                                    [table] => term_node
                                    [left_table] => node
                                )
                            [extra_type] => AND
                            [table] => term_node
                            [left_table] => node
                            [left_field] => vid
                            [field] => vid
                            [type] => INNER////// - desired value
                            [adjusted] => 1
                        )
                    [relationship] => node
                )
        )//... more stuff here

And if I programmatically add the table within views_query_alter() with:

$view->query->add_table('term_node');

I get the same thing other than 'type' => LEFT:

[term_node] => Array
                (
                    [table] => term_node
                    [num] => 1
                    [alias] => term_node
                    [join] => views_join Object
                        (
                            [definition] => Array
                                (
                                    [left_field] => vid
                                    [field] => vid
                                    [table] => term_node
                                    [left_table] => node
                                )
                            [extra_type] => AND
                            [table] => term_node
                            [left_table] => node
                            [left_field] => vid
                            [field] => vid
                            [type] => LEFT/////// I can't see how to make this INNER
                            [adjusted] => 1
                        )
                    [relationship] => node
                )

Any help much appreciated. There's not much information about this in the API or online.

Comments

dawehner’s picture

What's the problem with adding the table and then alter the join type?
The join type might come from a required relationship, so it is INNER by default.f

fiasst-1’s picture

Status: Active » Closed (works as designed)

hmm, thanks for your response although it seems in the end the JOIN wasn't the problem and LEFT has worked. the problem was the TID i was passing through... there's 2 days wasted!