I try to compare results of two subqueries in where clause in SQLKata.
In SQL it should be like this:
WHERE (SELECT count(id) FROM main.someTable) = (SELECT count(id) FROM main.anotherTable)
In SQLKata I can compare result of subquery with scalar value:
var mainSubquery = new Query("main.someTable")
.SelectRaw("count(id)");
var anotherSubquery = new Query("main.anotherTable")
.SelectRaw("count(id)");
query
.WhereSub(mainSubquery, "=", 0)
But I can't compare results of two subqueries this way:
query
.WhereSub(mainSubquery, "=", anotherSubquery),
How can I fix it? Maybe I should execute both of the subqueries and only then compare their results?
No overload accepts queries on both the left and right sides together.
But you can always compile the queries and use the
WhereRaw
. One gotcha is to be aware of the bindings orders.Take a look on this example:
This will output the following