INNER JOIN 没有 return 任何结果 - SQLite
INNER JOIN doesn't return any result - SQLite
我正在尝试查询我的数据库和来自 table 的 return 值,其中有 Foregin Key 和另外三个 tables,但是当我使用 INNER JOIN、WHERE 和并且在同一个查询中,我什么也没收到。
我的主要table:
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);
+----+--------------------+--------------+----------+---------+------------+------+------+--------+----------+-----+-------+---------+
| ID | Pergunta | Alternativas | Gabarito | Assunto | Vestibular | Ano | Tipo | Imagem | Previa | OBS | Fonte | qImagem |
+----+--------------------+--------------+----------+---------+------------+------+------+--------+----------+-----+-------+---------+
| 1 | SOME BIG QUESTION | a)A | a | 2 | 1 | 2014 | 0 | 3 | SOME BIG | | | |
| | | b)B | | | | | | | TEXT | | | |
| | | c)C | | | | | | | | | | |
| | | d)D | | | | | | | | | | |
+----+--------------------+--------------+----------+---------+------------+------+------+--------+----------+-----+-------+---------+
Assunto table:
CREATE TABLE Assunto (ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
Assunto TEXT NOT NULL,
Disciplina TEXT NOT NULL);
+----+--------------------------+------------+
| ID | Assunto | Disciplina |
+----+--------------------------+------------+
| 1 | DNA e RNA | Biologia |
| 2 | Geometria plana | Matemática |
| 3 | Evolução | Biologia |
| 4 | Associação de resistores | Física |
| 5 | Realismo e Naturalismo | Literatura |
+----+--------------------------+------------+
大学 table:
CREATE TABLE Universidades (ID INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT NOT NULL,
Vestibular TEXT (50) NOT NULL);
+-----+------------+
| ID | Vestibular |
+-----+------------+
| 1 | FUVEST |
| 2 | UNICAMP |
| 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,则查询 returns 存在于 table.
中的行
谢谢。
下面的 Matematica.Vestibular
列将是数字,因为它是引用 Universidades
table 中的 ID 列(定义为 ID INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT NOT NULL
)的列。因此,为什么 1 起作用,2 和 3 也会起作用(如果 Matematica table 中有行引用 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'
我正在尝试查询我的数据库和来自 table 的 return 值,其中有 Foregin Key 和另外三个 tables,但是当我使用 INNER JOIN、WHERE 和并且在同一个查询中,我什么也没收到。
我的主要table:
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);
+----+--------------------+--------------+----------+---------+------------+------+------+--------+----------+-----+-------+---------+ | ID | Pergunta | Alternativas | Gabarito | Assunto | Vestibular | Ano | Tipo | Imagem | Previa | OBS | Fonte | qImagem | +----+--------------------+--------------+----------+---------+------------+------+------+--------+----------+-----+-------+---------+ | 1 | SOME BIG QUESTION | a)A | a | 2 | 1 | 2014 | 0 | 3 | SOME BIG | | | | | | | b)B | | | | | | | TEXT | | | | | | | c)C | | | | | | | | | | | | | | d)D | | | | | | | | | | | +----+--------------------+--------------+----------+---------+------------+------+------+--------+----------+-----+-------+---------+
Assunto table:
CREATE TABLE Assunto (ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
Assunto TEXT NOT NULL,
Disciplina TEXT NOT NULL);
+----+--------------------------+------------+ | ID | Assunto | Disciplina | +----+--------------------------+------------+ | 1 | DNA e RNA | Biologia | | 2 | Geometria plana | Matemática | | 3 | Evolução | Biologia | | 4 | Associação de resistores | Física | | 5 | Realismo e Naturalismo | Literatura | +----+--------------------------+------------+
大学 table:
CREATE TABLE Universidades (ID INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT NOT NULL,
Vestibular TEXT (50) NOT NULL);
+-----+------------+ | ID | Vestibular | +-----+------------+ | 1 | FUVEST | | 2 | UNICAMP | | 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,则查询 returns 存在于 table.
中的行谢谢。
下面的 Matematica.Vestibular
列将是数字,因为它是引用 Universidades
table 中的 ID 列(定义为 ID INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT NOT NULL
)的列。因此,为什么 1 起作用,2 和 3 也会起作用(如果 Matematica table 中有行引用 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'