[MySQL] INSERT INTO-Problem & UPDATE: 2 Tabellen vergleichen
Mbe
- datenbank
1 Vinzenz Mai0 Mbe
Hallo,
ich würd gern wissen wie man per UPDATE-Befehl bestimmte Spalten in 2 verschiedenen Tabellen vergleichen kann.
z.B. habe ich in Tabelle A die Spalte "ID". In Tabelle B habe ich die Spalte "Aufgabe" und "ID". Nun soll in "Aufgabe" z.B. 'Test' geschrieben werden, wenn die ID aus Tabelle A mit der ID aus Tabelle B übereinstimmt.
Eigentlich hätte ich jetzt gedacht, dass das Ganze in etwa so funktioniert:
UPDATE TabelleB SET Aufgabe = "Test" WHERE TabelleA.ID = TabelleB.ID
Geht aber nicht, "weil die Spalte TabelleB.ID nicht bekannt ist" ...
Zweites Problem ist, dass ich mit einer Prozedur gern Werte in meine Tabelle einfügen will:
DELIMITER //
DROP PROCEDURE IF EXISTS`ppp_guest_setstart`//
CREATE DEFINER=`root`@`localhost` PROCEDURE `ppp_guest_setstart`($task_id bigint(20))
begin
INSERT INTO ppp_guest_timeslots(task_id) VALUES($task_id);
end
Und zwar soll in die Spalte "task_id" der Wert aus $task_id eingefügt werden ($task_id = $row -> id). Allerdings wird in der Tabelle immer nur "0" angezeigt. Mit echo $task_id;
wird aber die richtige ID angezeigt.
Der Code für die Prozedur in PHP sieht so aus:
mysql_select_db ($db, $conn) or die ("Unable to select Database");
$result = mysql_query ("CALL ppp_guest_setstart('$task_id')")
or die (mysql_error());
Hallo,
ich würd gern wissen wie man per UPDATE-Befehl bestimmte Spalten in 2 verschiedenen Tabellen vergleichen kann.
Eigentlich hätte ich jetzt gedacht, dass das Ganze in etwa so funktioniert:
UPDATE TabelleB SET Aufgabe = "Test" WHERE TabelleA.ID = TabelleB.ID
> Geht aber nicht, "weil die Spalte TabelleB.ID nicht bekannt ist" ...
wie üblich. Mit einem Join. Siehe <https://forum.selfhtml.org/?t=196720&m=1318644>.
Freundliche Grüße
Vinzenz
wie üblich. Mit einem Join. Siehe https://forum.selfhtml.org/?t=196720&m=1318644.
Ok, danke, das funktioniert soweit - mit Einschränkungen. Und zwar werden bei mir jetzt alle Einträge aktualisiert und nicht nur der, wo die task_id mit der id aus der anderen Tabelle übereinstimmt.
UPDATE ppp_guest_timeslots INNER JOIN ppp_guest_tasks ON ppp_guest_timeslots.task_id = ppp_guest_tasks.id SET start = CURRENT_TIMESTAMP() WHERE task_id = ppp_guest_tasks.id;