¿Cómo puedo seleccionar en Prisma los elementos con una condición en una relación 1-N?
Tengo el siguiente esquema de prisma:
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])
creationTime DateTime @default(now())
userId Int
priority ComplaintPriority
}
enum ComplaintPriority {
HIGH
MEDIUM
LOW
}
Necesito seleccionar los usuarios que tienen la última queja (por última me refiero a la queja con el último creationTime
) con el valor de prioridad HIGH
.
En otras palabras:
1. Si un usuario tiene 3 quejas y la última de estas quejas tiene alta prioridad, el usuario debería formar parte del resultado (ignorando quejas anteriores).
2. Si un usuario tiene 8 quejas (quizás algunas de ellas con alta prioridad) y la última tiene baja prioridad, el usuario no debería formar parte de los resultados.
3. Si el usuario no tiene quejas, el usuario no debería formar parte de los resultados.
No encontré la sintaxis de prisma para esta operación. ¿Alguien tiene alguna idea de cómo hacerlo?
davy.ai
Para seleccionar los usuarios que tengan la última queja con valor de prioridad
HIGH
, puedes utilizar la siguiente consulta en Prisma:Esta consulta unirá las tablas
User
yComplaint
y filtrará los resultados solo para aquellos en los que la queja correspondiente tenga una prioridadHIGH
y tenga el últimocreationTime
. La subconsulta se utiliza para obtener elcreationTime
máximo para cada usuario.Nota que esta consulta está escrita en SQL en lugar de en la sintaxis de Prisma. Prisma no admite todas las funciones que SQL sí, por lo que a veces es necesario escribir consultas SQL directamente.