Sql werte von einer tabelle auf die andere übertragen?
Zb ich hab eine datenbank in der sind zwei tabellen, eine heisst accounts eine heisst posts.
ein account hat eine einzigartige user_id & username bei jedem erstellten post soll das dabei stehen um später bei posts danach zu filtern was die Person gepostet hat.
aber habe das mit der „user_id“ erst später in posts eingefügt deswegen steht da überall 0.
Wie kann ich jetzt sagen das da wo username übereinstimmt soll die gleiche user_id auch bekommen.
Hat keinen krassen sinn dahinter wollte nur bisschen herum probieren und lernen mit sql bevor ich irgendeinen php code schreibe.
Bin nämlich leider ziemlich schlecht in sql
Ich mein das jetzt auch nicht zu gross ernst mit dem twitter instagram klon keine angst wegen sicherheitslücken.
1 Antwort
Ich bin jetzt auch nicht der beste, aber das könnte helfen:
UPDATE posts
SET posts.user_id = accounts.user_id
FROM accounts
WHERE posts.username = accounts.username;
Diese Anweisung sagt der Datenbank, dass sie die "user_id" in der Tabelle "posts" aktualisieren soll, indem sie die "user_id" aus der Tabelle "accounts" verwendet, wenn der "username" in beiden Tabellen übereinstimmt.
Vergiss nicht, vorher eine Datensicherung durchzuführen, falls etwas schief geht, da UPDATE-Anweisungen Daten in der Datenbank ändern können.
Tut mir leid, dass ich dir nicht helfen konnte, es freut mich allerdings, dass es letztendlich doch geklappt hat.
Dein Ansatz war nicht komplett falsch, wenn du ihn einmal mit der Lösung von ChatGPT vergleichst.
Dein Ansatz geht in Richtung Subselect:
UPDATE posts
SET posts.user_id = (select accounts.user_id
FROM accounts
WHERE posts.username = accounts.username)
;
Danke aber gab leider Fehler, hab mich dann entschieden es doch chat gpt zu schicken.
dachte das wäre zu komplex für ihn aber nach 3 versuchen hat ers geschafft :
UPDATE posts INNER JOIN accounts ON posts.username = accounts.username SET posts.user_id = accounts.user_id;