Как получить результат sql только с строками, которые имеют строку связанных отношений
Я пытаюсь запросить базу данных с помощью клиента Prism и хочу вернуть только те строки, которые имеют внешний ключ в объединенной таблице.
Например, получите всех пользователей, которые также создали сообщение. Мне нужно своего рода "ВНУТРЕННЕЕ СОЕДИНЕНИЕ".
Я пробовал что-то вроде:
return this.prisma.user.findMany({
where: {
Post: {
some: {
id: {
not: 0,
}
}
}
}
});
Но результат не тот. Я не знаю, как использовать "нет, некоторые или все"
1 ответ
Решение
Предположим, у меня есть такая схема:
model User {
id Int @default(autoincrement()) @id
name String
posts Post[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Post {
id Int @default(autoincrement()) @id
title String
user User? @relation(fields: [userId], references: [id])
userId Int?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
Я получаю пользователей без сообщений по следующему запросу:
const usersWithoutPosts = await prisma.user.findMany({
where: {
posts: {
none: {
id: undefined,
},
},
},
})
Не могли бы вы попробовать этот способ и проверить?