Skip to content

feat: sub-query support #76

@adrianbrowning

Description

@adrianbrowning

Summary

Add ability to use sub-queries within the query builder — e.g. in WHERE, FROM, SELECT, and JOIN clauses.

Use Cases

  • WHERE id IN (SELECT id FROM ...) — correlated/uncorrelated sub-queries
  • FROM (SELECT ...) AS subquery — derived tables
  • SELECT (SELECT COUNT(*) FROM ...) AS total — scalar sub-queries
  • JOIN (SELECT ...) AS sub ON ... — sub-query joins

Proposed API (rough)

// WHERE IN sub-query
db.user.select(({ where, subQuery }) =>
  where({ id: { in: subQuery('post', q => q.select(({ field }) => [field('authorId')])) } })
)

// Derived table / FROM sub-query
db.user.select(({ fromSubQuery }) =>
  fromSubQuery('post', q => q.select(...), 'p')
)

Notes

  • Sub-queries should be typed — return type inferred from inner select
  • Must support both correlated and uncorrelated forms
  • Consider parameterized vs. inlined values for safety

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions