node.js - 如何使用 sqlite 连接尚未包含数据的表
问题描述
我正在尝试加入两个表:用户和收藏夹。用户可能还没有收藏夹,当我尝试 INNER JOIN 两者时,我没有找回没有收藏夹的用户。即使第二个表没有该用户的数据,有什么方法可以加入吗?
我使用以下代码创建了用户表:
db.run(`CREATE TABLE Users(
UserId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
Name TEXT NOT NULL,
Password TEXT NOT NULL,
Phone VARCHAR,
Email TEXT,
RestaurantId INTEGER,
FOREIGN KEY(RestaurantId) REFERENCES Restaurants(RestaurantId))`, (err) => {
if(err) {
console.error(err.message);
} else {
//insert some values
var insert = 'INSERT INTO Users (Name, Password, Phone, Email, RestaurantId) VALUES (?, ?, ?, ?, ?)';
db.run(insert, [
'Liam',
'blabla',
'+32412345678',
'email@email.com',
1
]);
}
}
);
和收藏夹表:
db.run(`CREATE TABLE Favourites(
FavouriteId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
UserId INTEGER NOT NULL,
RestaurantId INTEGER NOT NULL,
FOREIGN KEY(UserId) REFERENCES Users(UserId),
FOREIGN KEY(RestaurantId) REFERENCES Restaurants(RestaurantId))`, (err) => {
if(err) {
console.error(err.message);
} else {
//insert some values
var insert = 'INSERT INTO Favourites (UserId, RestaurantId) VALUES (?, ?)';
db.run(insert, [
1,
1
]);
}
}
);
这些插入后生成的表中存在的数据没有问题。只有当没有收藏夹的新用户被添加到数据库时,才会出现问题。
解决方案
您正在寻找 LEFT JOIN。查看文档:https ://www.w3resource.com/sqlite/sqlite-left-join.php 。
LEFT JOIN 返回连接左侧的所有记录,匹配的记录来自右侧。
推荐阅读
- ios - GMT 中的当前日期与 DateFormatter
- flutter - 使用 BottomSheet 时未找到 Scaffold 小部件
- flutter - 如何在颤动中创建水平列表
- mysql - 如何修复 #1366 - 不正确的字符串值:'\xE6\x10\x00\x00\x01\x01...'
- .net-core - Prism 可以使用 .NET Core 的内置依赖注入吗?
- python - importlib.import_module 忽略在 __init__.py 中进行的重新导出
- macos-catalina - 如何在 macOS Catalina 上安装 gmp4
- html - extends - 如何忽略父级上的子级 CSS
- javascript - Giphy 无法在 Discord 机器人上运行(javascript)
- ios - iOS ARKit setWorldOrigin 没有效果