-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
It seems Scuttle cannot handle queries with a subquery inside a JOIN. The following example uses only one level of nesting:
SELECT c.id, c.name, t.status
FROM campaigns c
LEFT OUTER JOIN (
SELECT campaigns.id, campaign_approvals.status as status
FROM campaigns
LEFT OUTER JOIN campaign_approvals on campaign_approvals.campaign_id = campaigns.id
LEFT OUTER JOIN users on campaign_approvals.user_id = users.id
WHERE (approval_type = 'publisher_approval' AND (status = 'approved' OR status = 'declined') AND archived IS FALSE)
) t on c.id=t.id
GROUP BY c.id, t.status Scuttle turns this to:
Campaign.select(
[
C.arel_table[:id], C.arel_table[:name], T.arel_table[:status]
]
).joins(
Campaign.arel_table.join(User.arel_table, Arel::Nodes::OuterJoin).on(
CampaignApproval.arel_table[:user_id].eq(User.arel_table[:id])
).join_sources
).group(C.arel_table[:id], T.arel_table[:status])The nested SELECT inside the LEFT OUTER JOIN statement gets ignored..
Scuttle does recognize subquery patterns like this:
SELECT t.id, t.name, ...
FROM ( a.id, a.name,...
SELECT ...
FROM sometable a
) tReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels