sql - 如何使用 SQLite 通过 ID 将表连接在一起?
问题描述
我在连接部分表格时遇到问题。我希望将人们的名字和姓氏以及他们感兴趣的任何东西结合在一起。我收到此错误消息:“[1] [SQLITE_ERROR] SQL 错误或缺少数据库(不明确的列名:pi.PersonID)”
CREATE TABLE people (
PersonID INTEGER PRIMARY KEY AUTOINCREMENT,
FirstName VARCHAR(100),
LastName VARCHAR(100)
);
INSERT INTO people (FirstName, LastName)
VALUES ('Walter', 'White'),
('Jesse', 'Pinkman'),
('Saul', 'Goodman');
SELECT * FROM people;
CREATE TABLE interests (
InterestID INTEGER PRIMARY KEY AUTOINCREMENT,
Interest VARCHAR(100)
);
INSERT INTO interests (Interest)
values ('Swimming'),
('Basketball'),
('Running');
SELECT * FROM interests;
CREATE TABLE persons_interests (
PersonID INTEGER,
InterestID INTEGER,
PRIMARY KEY (PersonID, InterestID),
FOREIGN KEY (PersonID) REFERENCES people,
FOREIGN KEY (InterestID) REFERENCES interests
);
DROP TABLE persons_interests;
INSERT INTO persons_interests (PersonID, InterestID)
VALUES (1, 3),
(2, 2),
(3, 3);
SELECT * FROM persons_interests;
SELECT FirstName, LastName, Interest FROM people p, interests i
JOIN persons_interests pi on p.PersonID = pi.PersonID
JOIN persons_interests pi on i.Interest = pi.InterestID;
解决方案
不要混合隐式和显式连接!你似乎想要:
select p.firstname, p.lastname, i.interest
from people p
inner join persons_interests pi on pi.personid = p.personid
inner join interests i on i.interestid = pi.interestid;
from
在这里,每个表在子句中只出现一次,并带有相关的连接条件。
推荐阅读
- node.js - 如何使用 sequelize 删除关联的行
- ionic-framework - 使用 android (Ionic 3) 中的 ImagePicker 插件重定向以在其他图像文件夹中查看
- python - 使用 marshmallow-mongoengine 加载数据时如何包含其他未知字段?
- scala - 无法从生成的原型中获取 parseFrom 作为可用方法
- javascript - 有条件地在 create-react-app 中导入资产
- c# - AuditIgnore 部分来自正文
- c# - 使用 api-key 限制 Swagger .net 核心中的某些端点
- r - 如何按名称对 DNAStringSet 对象进行子集化?
- javascript - 折射代码给出错误代码 500,而原始代码工作正常
- python - 从python中的字符串中提取特定模式