SQlite错误:使用join时没有这样的表

SQlite错误:使用join时没有这样的表,sqlite,Sqlite,我用第三个多对多关系将两个表连接在一起。我正在尝试选择,但SQLite(版本3.11.0)一直告诉我,我的其中一个不存在,这是不正确的!我不知道我做错了什么 这是我的桌子: DROP TABLE IF EXISTS traits; CREATE TABLE traits( trait_id INTEGER UNIQUE NOT NULL CHECK(TYPEOF(trait_id) = 'integer'), name VARCHAR UNIQUE NOT

我用第三个多对多关系将两个表连接在一起。我正在尝试选择,但SQLite(版本3.11.0)一直告诉我,我的其中一个不存在,这是不正确的!我不知道我做错了什么

这是我的桌子:

DROP TABLE IF EXISTS traits;
CREATE TABLE traits(
     trait_id    INTEGER UNIQUE NOT NULL CHECK(TYPEOF(trait_id) = 'integer'),
     name        VARCHAR UNIQUE NOT NULL CHECK(TYPEOF(name) = 'text'),
     uri         VARCHAR UNIQUE NOT NULL CHECK(TYPEOF(uri) = 'text'),
     PRIMARY KEY (trait_id)
  );

DROP TABLE IF EXISTS trait_categories;
CREATE TABLE trait_categories(
     trait_category_id INTEGER UNIQUE NOT NULL CHECK(TYPEOF(trait_category_id) = 'integer'),
     efo_id            VARCHAR UNIQUE NOT NULL CHECK(TYPEOF(efo_id) = 'text'),
     name              VARCHAR UNIQUE NOT NULL CHECK(TYPEOF(name) = 'text'),
     uri               VARCHAR UNIQUE NOT NULL CHECK(TYPEOF(uri) = 'text'),
     PRIMARY KEY (trait_category_id)
  );

DROP TABLE IF EXISTS trait_categories_traits;
CREATE TABLE trait_categories_traits(
     trait_category_id INTEGER NOT NULL CHECK(TYPEOF(trait_category_id) = 'integer'),
     trait_id          INTEGER NOT NULL CHECK(TYPEOF(trait_id) = 'integer'),
     FOREIGN KEY (trait_category_id) REFERENCES trait_categories(trait_category_id),
     FOREIGN KEY (trait_id) REFERENCES traits(trait_id)
  );
以下是我的选择失败:

SELECT trait_categories.name, traits.name
FROM trait_categories JOIN trait_categories_traits ON trait_categories_traits.trait_category_id = trait_categories.trait_category_id
                      JOIN traits.trait_id         ON trait_categories_traits.trait_id = traits.trait_id;
SQLite说:

sqlite> select trait_id from traits limit 1;
663
sqlite>     SELECT trait_categories.name, traits.name
   ...>     FROM trait_categories JOIN trait_categories_traits ON trait_categories_traits.trait_category_id = trait_categories.trait_category_id
   ...>                           JOIN traits.trait_id         ON trait_categories_traits.trait_id = traits.trait_id;
Error: no such table: traits.trait_id

请提供帮助。

JOIN连接两个表,因此它需要两个表名。 但是
traits.trait\u id
不是表名

您似乎想加入
traits
表,因此请删除
.trait\u id
。(当两列名称相同时,使用会更简单。)

SELECT ...
FROM trait_categories
JOIN trait_categories_traits USING (trait_category_id)
JOIN traits                  USING (trait_id);