Create tabke Skills .....
не удастся. Вы должны использовать Create table Skills
.
Также не должно быть Id int not null primary key,,
(две запятые), это не получится.
Скорее всего, вы должны использовать Id INTEGER PRIMARY KEY
, а не Id int not null primary key
.
Это потому, что обычно столбец Id должен быть уникальным идентификатором строки. С SQLite INTEGER PRIMARY KEY
имеет особый смысл, в то время как INT PRIMARY KEY does not
.
То есть, если используется INTEGER PRIMARY KEY
, то столбец будет псевдонимом столбца rowid , который должен быть уникальным 64-разрядным целым числом со знаком и, что важно, если при вставке строки не указывается значение тогда SQLite назначит уникальное целое число. т.е. все важные Id .
Этот Id первоначально будет равен 1, затем, вероятно, 2, затем, вероятно, 3 и т. Д., Хотя нет никакой гарантии, что Id будет монотонно увеличиваться.
Есть дополнительные ошибки, в основном, пропущенные запятые. Следующее должно работать: -
CREATE TABLE IF NOT EXISTS applicant(
Id INTEGER PRIMARY KEY,
IdName integer,
idSkill integer,
idContact integer,
Constraint initial foreign key (idName) References Initiale(id),
CONSTRAINT contacT foreign key (idContact) References contact(id),
CONSTRAINT Skills foreign key (idSkill) references Skills(id));
Create table IF NOT EXISTS Initiale(
Id INTEGER PRIMARY KEY,
firstname text,
middlename text);
Create table IF NOT EXISTS contact(
Id INTEGER PRIMARY KEY,
phone text,
email text);
Create table IF NOT EXISTS Skills(
Id INTEGER PRIMARY KEY,
Nane text);
Затем вы можете вставить данные в виде: -
INSERT INTO Initiale (firstname,middlename) -- Note absence of Id so SQLite will generate
VALUES
('Fred','James'), -- very likely id 1
('Alan','Roy'), -- very likely id 2
('Simon','Gerorge')-- very likely id 3
;
INSERT INTO contact -- alternative way of getting Id generated (specify null for Id)
VALUES
(null,'0123456789','email01@email.com'), -- very likely id 1
(null,'0987654321','email02@email.com'), -- very likely id 2
(null,'3333333333','email03.@email.com') -- very likely id 3
;
INSERT INTO Skills (Nane)
VALUES
('Skill01'),('Skill02'),('Skill03') -- very likely id's 1,2 and 3
;
INSERT INTO applicant (IdName,idSkill,idContact)
VALUES
-- First applicant
(2, -- Alan Roy
3, -- Skill 3
1), -- Contact 0123456789 )
-- Second Applicant
(3, -- Simon George
3, -- Skill 3
2), -- Contact 0987654321 )
-- Third Applicant
(2, -- Alan Roy again????
1, -- Skill 1
3), -- contact 3333333333)
(1,1,1) -- Fred James/ Skill 1/ Contact 0123456789
--- etc
;
Принимая во внимание, что строки в таблице Initiale, Contact и Skills ДОЛЖНЫ существовать до того, как в таблицу «Заявитель» могут быть внесены вставки.
Затем можно выполнить запрос, например: -
SELECT * FROM applicant
JOIN Initiale ON Initiale.Id = idName
JOIN contact ON contact.Id = idContact
JOIN Skills ON Skills.Id = idSkill
Это приведет к (используя данные, как указано выше): -