Hallo zusammen,
ich würde gerne Daten in einer Tabelle mit den Daten in einer Anderen verknüpfen. Dabei würde ich gerne die Daten immer nur einfach verknüpfen, sodass kein element 2-fach verlinkt wird. Bsp:
Wie mir scheint, wird das letzte SELECT in meinem UPDATE query nur einmal für das UPDATE ausgeführt, nicht aber für jede Zeile des Updates. Damit sind die Daten natürlich nicht aktuell und ein Node kann mehrfach in den Links verlinkt werden.
Leider scheitere ich daran, die NodeID in der Link Tabelle "UNIQUE" zu bekommen. Ich kann sie aber auch nicht als UNIQUE spezifizieren, da in einem anderen/späteren Schritt auch mehrfache Links erzeugt werden sollen.
Ist mein Problem verständlich?
Hat jemand eine Idee wie man das lösen kann?
Ich bedanke mich schonmal für eure Ideen und Hilfen.
Grüße,
Basti
ich würde gerne Daten in einer Tabelle mit den Daten in einer Anderen verknüpfen. Dabei würde ich gerne die Daten immer nur einfach verknüpfen, sodass kein element 2-fach verlinkt wird. Bsp:
Code:
/* Tabelle 1 neu erzeugen */
DROP TABLE IF EXISTS Nodes;
CREATE TABLE Nodes (
ID INTEGER PRIMARY KEY AUTOINCREMENT
UNIQUE
NOT NULL,
Data INTEGER NOT NULL
);
/* Tabelle 1 befüllen */
INSERT INTO Nodes (Data) VALUES (2), (3), (9), (20), (19), (13), (29), (25), (9), (25), (20), (24);
/* Tabelle 2 neu erzeugen */
DROP TABLE IF EXISTS Links;
CREATE TABLE Links (
ID INTEGER PRIMARY KEY AUTOINCREMENT
UNIQUE
NOT NULL,
Data INTEGER NOT NULL,
NodeID INTEGER
);
/* Tabelle 2 befüllen */
INSERT INTO Links (Data) VALUES (9), (9), (13), (19), (20), (20), (21), (24), (25), (25), (29), (30), (32);
/* ... und jetzt die links erzeugen */
UPDATE Links
SET NodeID = (
SELECT Nodes.ID
FROM Nodes
WHERE Nodes.Data = Links.Data
/* prüfe, dass der Link unique ist: */
AND Nodes.ID NOT IN (SELECT NodeID FROM Links WHERE NodeID IS NOT NULL) );
Leider scheitere ich daran, die NodeID in der Link Tabelle "UNIQUE" zu bekommen. Ich kann sie aber auch nicht als UNIQUE spezifizieren, da in einem anderen/späteren Schritt auch mehrfache Links erzeugt werden sollen.
Ist mein Problem verständlich?
Hat jemand eine Idee wie man das lösen kann?
Ich bedanke mich schonmal für eure Ideen und Hilfen.
Grüße,
Basti