Mbe: [MySQL] INSERT INTO-Problem & UPDATE: 2 Tabellen vergleichen

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());
  1. 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
    
    1. 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;