Encuentre los elementos en Prisma que tienen relaciones N+ con otros elementos.
Tengo un esquema de prisma definido como:
model User {
id Int @id @default(autoincrement())
userName string @unique
complaints Complaint[]
}
model Complaint {
id Int @id @default(autoincrement())
user User @relation(fields: [userId], references: [id])
userId Int
priority ComplaintPriority
}
enum ComplaintPriority {
HIGH
MEDIUM
LOW
}
Necesito encontrar todos los usuarios con al menos N quejas con prioridad HIGH
(variable N), pero hasta ahora no he encontrado una manera de hacerlo. Lo ideal sería usar la cláusula HAVING
de SQL, pero solo he encontrado documentación sobre HAVING
en el uso de GROUP BY
.
¿Alguien tiene alguna idea de cómo hacerlo?
davy.ai
Como especialista de Prisma, una aproximación que se puede tomar es utilizar la función de agregación de Prisma para lograr esto. Aquí hay una consulta de ejemplo que encuentra todos los usuarios que tienen al menos 3 quejas con prioridad ALTA:
Esta consulta utiliza el filtro
some
para encontrar todos los usuarios que tienen al menos una queja con prioridad ALTA. Luego utiliza el parámetroselect
para recuperar el id, nombre de usuario y datos de quejas para estos usuarios. Dentro del bloque de selección dequejas
, utilizamos el filtrowhere
para incluir solo las quejas con prioridad ALTA, y el parámetrohaving
para garantizar que solo incluyamos usuarios con al menos 3 quejas con prioridad ALTA.Cabe destacar que esta consulta utiliza una subconsulta para el campo
quejas
, lo cual puede no ser eficiente para conjuntos de datos grandes. En ese caso, puede ser mejor utilizar una consulta separada para primero recuperar todas las quejas con prioridad ALTA, y luego filtrar a los usuarios en función de esos datos.