Skip to content

Instantly share code, notes, and snippets.

@luanlmd
Created November 13, 2023 17:54
Show Gist options
  • Save luanlmd/f8d3c9275c5555c4030c621e98bf5a95 to your computer and use it in GitHub Desktop.
Save luanlmd/f8d3c9275c5555c4030c621e98bf5a95 to your computer and use it in GitHub Desktop.
Drizzle get relation count
// final query
public async getInfluencersWithReferrals() {
return db
.select({ user: userSchema, referralsCount: sql<number>`count(${referralSchema.id})` })
.from(userSchema)
.innerJoin(referralSchema, eq(userSchema.id, referralSchema.userId))
.groupBy(userSchema.id);
}
// reverse query
public async groupedReferralsWithUser() {
return db
.select({
userId: referralSchema.userId,
count: sql<number>`count(${referralSchema.userId})`,
user: userSchema,
})
.from(referralSchema)
.leftJoin(userSchema, eq(referralSchema.userId, userSchema.id))
.groupBy(referralSchema.userId)
.having(({ count }) => gt(count, 1));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment