У меня есть 2 таблицы Users (имя TEXT) и 'Coffee Breaks' (Person1 TEXT, Person2 TEXT).
Мне нужно написать объединение, которое вернет всех пользователей, которых у данного пользователя не былоПерерыв на кофе с.
Я пытаюсь выполнить левое соединение с IS NULL на правой стороне.
Запрос базы данных завершается без ошибок, но я не получаю пользователей врезультат.Проблема с моей строкой SQL-запроса?
SQL:
WITH bilateral(p1, p2) AS (SELECT Person1 AS p1, Person2 AS p2 FROM "Coffee Breaks"
UNION ALL SELECT Person2 AS p1, Person1 AS p2 FROM "Coffee Breaks"
GROUP BY p1, p2)
SELECT * FROM Users u1, Users u2
LEFT JOIN bilateral bi ON u1.Name=bi.p1 AND u2.Name=bi.p2
WHERE bi.p1 IS NULL
Пример данных:
Users
[
{
Name: "Casey"
},
{
Name: "Jake"
},
{
Name: "Mark"
},
{
Name: "Steve"
}
]
Coffee Breaks
[
{
Person1: "Steve",
Person2: "Casey"
}
]
Код сервера:
db.neverCoffeed = function(user) {
const sql = `WITH bilateral(p1, p2) AS (SELECT Person1 AS p1, Person2 AS p2 FROM "Coffee Breaks"
UNION ALL SELECT Person2 AS p1, Person1 AS p2 FROM "Coffee Breaks"
GROUP BY p1, p2)
SELECT * FROM Users u1, Users u2
LEFT JOIN bilateral bi ON u1.Name=bi.p1 AND u2.Name=bi.p2
WHERE bi.p1 IS NULL`;
return new Promise((resolve, reject) => {
this.run(sql, (err, users) => {
if (err) {
reject(err);
}
else {
console.log('users', users)
resolve(users);
}
});
});
};