Översätta schema till sql
Jag vill översätta schemat nedan till SQL-tabeller, men jag är inte säker på förhållandet mellan Dots och Connections.
Har inte Dots en relation tillbaka till sig själv som i diagrammet nedan:
Om ja, så försökte jag skapa tabellerna med följande sqript (sqlite):
CREATE TABLE Dots (
idnr integer PRIMARY KEY,
x integer NOT NULL,
y integer NOT NULL,
CONSTRAINT unique_pair UNIQUE(x, y)
);INSERT INTO Dots VALUES(0,0,0);
INSERT INTO Dots VALUES(3,8,1);
INSERT INTO Dots VALUES(-5,7,2);CREATE TABLE Connections (
c_id integer PRIMARY KEY,
from integer NOT NULL,
to integer NOT NULL,
weight integer,
CONSTRAINT parent_fk FOREIGN KEY (from) REFERENCES Dots(idnr),
CONSTRAINT parent_fk FOREIGN KEY (to) REFERENCES Dots(idnr),
CONSTRAINT check_not_equal CHECK(from != to)
);INSERT INTO Connections VALUES(0, 0,1,4);
INSERT INTO Connections VALUES(1, 1,0,7);
INSERT INTO Connections VALUES(2, 2,1,9);
Dock verkar det vara något fel med hur jag deklarerar Connections, för jag får följande meddelande:
SQL Error [1]: [SQLITE_ERROR] SQL error or missing database (near "from": syntax error)
Någon som vet vad jag gör för fel?
Jag misstänker att "from" är ett reserverat ord i SQL.
Laguna skrev:Jag misstänker att "from" är ett reserverat ord i SQL.
Där satt den! Det borde jag ju ha förstått :D Tack för hjälpen
Så jag bytte namn på attributen from och to till from_d och to_d. När jag har skapat dessa tabeller enligt koden ovan vill jag sedan extrahera data på följande vis:
Testade att köra följande script, men fick en tom tabell som resultat:
SELECT F.x AS x_from, F.y AS y_from, T.x AS x_to, T.y AS y_to, weight
FROM Dots F, Connections, Dots T
WHERE from_d = F.idnr AND to_d = T.idnr;
Någon som vet varför frågan returnerar en tom tabell?
TB16 skrev:Så jag bytte namn på attributen from och to till from_d och to_d. När jag har skapat dessa tabeller enligt koden ovan vill jag sedan extrahera data på följande vis:
Testade att köra följande script, men fick en tom tabell som resultat:
SELECT F.x AS x_from, F.y AS y_from, T.x AS x_to, T.y AS y_to, weight
FROM Dots F, Connections, Dots T
WHERE from_d = F.idnr AND to_d = T.idnr;Någon som vet varför frågan returnerar en tom tabell?
Får du inga varningar? Var definieras from_d nånstans?
Jag tror att "F.x AS x_from" är bakochfram också. AS har man för att definiera lokala namn för kolumner, så "F.x_from AS xf" skulle vara mer användbart. Och jag tror inte logiken i WHERE fungerar, för tabellen Dots finns bara en gång, så F och T är samma sak.