querybuilder icon indicating copy to clipboard operation
querybuilder copied to clipboard

Error with AsCount on query with Common Table Expression

Open Wimmen opened this issue 9 months ago • 2 comments

When you have a query with a Common Table Expression the query.AsCount().Get() function will return "Invalid object name 'cte0'."

When I print the SQL of query.AsCount() the WITH block is missing.

Wimmen avatar Apr 14 '25 14:04 Wimmen

There is another issue with AsCount (https://github.com/sqlkata/querybuilder/discussions/749) maybe we can try to rethink what would be the best way to count rows.

fairking avatar May 06 '25 16:05 fairking

This is the way I do counts in my application:

var countQuery = QueryFactory.Query();
countQuery.SelectRaw("count(1) as Count").From(query, "csq0");
foreach (var with in withs)
{
     countQuery = countQuery.WithRaw(with.Alias, with.Query);
}

var result = await countQuery.GetAsync();

So wrapping the original query in a select count(1) and reapplying the Common Table Expressions to the new query if there are any.

Wimmen avatar May 07 '25 12:05 Wimmen