【问题标题】:INNER JOIN doesn't return any result - SQLiteINNER JOIN 不返回任何结果 - SQLite
【发布时间】:2018-06-27 01:38:43
【问题描述】:

我正在尝试查询我的数据库并从一个表中返回值,该表具有另外三个表的 Foregin 键,但是当我在同一个查询中使用 INNER JOIN、WHERE 和 AND 时,我什么也没收到。

我的主桌:

CREATE TABLE Matematica (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, 
    Pergunta TEXT NOT NULL, 
    Alternativas TEXT, 
    Gabarito TEXT NOT NULL, 
    Assunto INTEGER NOT NULL REFERENCES Assunto (ID), 
    Vestibular INTEGER NOT NULL REFERENCES Universidades (ID), 
    Ano NUMERIC NOT NULL, 
    Tipo INTEGER NOT NULL, 
    Imagem TEXT, Previa TEXT NOT NULL, 
    OBS TEXT, 
    Fonte TEXT, 
    qImagem TEXT);
+----+--------+--------------+-------- --+---------+------------+------+------+--------+- ---------+-----+--------+----------+ |身份证 |佩尔贡塔 |替代品 |加巴里托 |阿松托 |前庭 |野 |提示 |图像 |普雷维亚 | OBS |字体 | qImagem | +----+--------+--------------+-------- --+---------+------------+------+------+--------+- ---------+-----+--------+----------+ | 1 |一些大问题 | a)一个 |一个 | 2 | 1 | 2014 | 0 | 3 |一些大 | | | | | | | b)B | | | | | | |正文 | | | | | | | c)C | | | | | | | | | | | | | | d)D | | | | | | | | | | | +----+--------+--------------+-------- --+---------+------------+------+------+--------+- ---------+-----+--------+----------+

Assunto 表:

CREATE TABLE Assunto (ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 
    Assunto TEXT NOT NULL, 
    Disciplina TEXT NOT NULL);
+----+--------------+------------+ |身份证 |阿松托 |纪律| +----+--------------+------------+ | 1 | DNA 和 RNA |生物学 | | 2 |平面几何 |材料 | | 3 |进化 |生物学 | | 4 |电阻器协会 |费西卡 | | 5 |现实主义和自然主义 |文学 | +----+--------------+------------+

大学表:

CREATE TABLE Universidades (ID INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT NOT NULL, 
    Vestibular TEXT (50) NOT NULL);
+-----+------------+ |身份证 |前庭 | +-----+------------+ | 1 | FUVEST | | 2 |统一营 | | 3 | VUNESP | +-----+------------+

我的 SQL 查询:

SELECT Pergunta,
       Alternativas,
       Gabarito,
       Assunto.Assunto          AS Assunto,
       Universidades.Vestibular AS Vestibular,
       Ano,
       Tipo,
       Imagem,
       Previa,
       OBS,
       Fonte,
       qImagem,
       Matematica.ID
FROM   Matematica
       INNER JOIN Assunto
               ON Assunto.ID = Matematica.Assunto
       INNER JOIN Universidades
               ON Universidades.ID = Matematica.Vestibular
WHERE  Ano = 2014
       AND Matematica.Vestibular = 'FUVEST' 

如果我从 'FUVEST' 更改为 1,则查询返回表中存在的行。

谢谢。

【问题讨论】:

  • 也许你的意思是:- WHERE Ano = 2014 AND Universidades.Vestibular = 'FUVEST'
  • @MikeT 工作,谢谢!你能在现场回答,所以我可以认为这个问题已经解决了吗?

标签: sql database sqlite inner-join where-clause


【解决方案1】:

在下面的列Matematica.Vestibular 将是数字,因为它是引用Universidades 表中的ID 列(定义为ID INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT NOT NULL)的列。因此为什么 1 有效,2 和 3 也有效(如果 Matematica 表中有行引用 UNICAMP 和 VUNESP,即 UNICAMP 的 ID 为 2 VUNESP 为 3),则任何其他数字都不会。

SELECT Pergunta,
       Alternativas,
       Gabarito,
       Assunto.Assunto          AS Assunto,
       Universidades.Vestibular AS Vestibular,
       Ano,
       Tipo,
       Imagem,
       Previa,
       OBS,
       Fonte,
       qImagem,
       Matematica.ID
FROM   Matematica
       INNER JOIN Assunto
               ON Assunto.ID = Matematica.Assunto
       INNER JOIN Universidades
               ON Universidades.ID = Matematica.Vestibular
WHERE  Ano = 2014
       AND Matematica.Vestibular = 'FUVEST' 

我相信您要检查的是 Universidades 是否是 FUVEST,因此上述应更改为(最后一行已更改):-

SELECT Pergunta,
       Alternativas,
       Gabarito,
       Assunto.Assunto          AS Assunto,
       Universidades.Vestibular AS Vestibular,
       Ano,
       Tipo,
       Imagem,
       Previa,
       OBS,
       Fonte,
       qImagem,
       Matematica.ID
FROM   Matematica
       INNER JOIN Assunto
               ON Assunto.ID = Matematica.Assunto
       INNER JOIN Universidades
               ON Universidades.ID = Matematica.Vestibular
WHERE  Ano = 2014
       AND Universidades.Vestibular = 'FUVEST' 

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多