I think it's possible for me to change the order of operations. I'll give 
that a try. Thank you as always!

On Friday, August 12, 2022 at 2:59:47 PM UTC-5 Jeremy Evans wrote:

> On Fri, Aug 12, 2022 at 11:15 AM Matt Culpepper <ma...@culpepper.co> 
> wrote:
>
>> Hey Jeremy,
>>
>> I remember a while back, I asked about the use of graph and eager_graph 
>> together, and you said it wasn't possible and (IIRC) to use join instead of 
>> graph.
>>
>> I noticed something I thought was strange today.
>>
>> Whenever I have a dataset with a join and call eager_graph.all, it issues 
>> 2 queries. So,
>>
>> Model.where(status: 'pending').eager_graph(:association).all
>> => one query, as expected
>>
>> Model.join(:accounts, id: :account_id).eager_graph(:association).all
>>
>> => SELECT * FROM "models" INNER JOIN "accounts" ON ("accounts"."id" = 
>> "models"."account_id") 
>>
>> => SELECT <fields> FROM (
>>   SELECT * FROM "models" INNER JOIN "accounts" ON ("accounts"."id" = 
>> "models"."account_id")
>> ) AS "models" 
>> LEFT OUTER JOIN "associations" AS \"associations\" ON <snip>
>>
>> My use case is that I have a base dataset with joins, but I want to be 
>> able to support dynamic `?include=association` from query params.
>>
>> Implemented like this: base_dataset.eager_graph(*includes) if 
>> includes.any?
>>
>> Any ideas on this use case and the extra query?
>>
>
> The extra query could be to get columns.  However, there should be a LIMIT 
> 0/1 or equivalent in that case.
>
> Do you have to do the join first?  Could you do it after the eager_graph?  
> That may avoid the query.  You'll have to use add_graph_aliases if you want 
> to include any columns from the table you are joining manually, in that 
> case.
>
> One issue you could have with the join before eager_graph is if you have 
> any columns with the same name in both models and accounts.
>
> Thanks,
> Jeremy
>

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sequel-talk+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sequel-talk/f80d141e-6f64-4291-b6fb-7d78b45e19e2n%40googlegroups.com.

Reply via email to