MySQL-Problemchen->INSERT über M:N-Relation

Davicito

Erfahrenes Mitglied
Hallo,
ich benötige mal Eure Hilfe in Sachen INSERT... ON DUPLICATE KEY UPDATE...

In meiner Datenbank gibt es mehrere N zu M (N:M) Relationen und habe bereits schon eine Select-Abfrage formuliert, hinbekommen
SQL:
...
SELECT
		anr.*,
		ma.Personal_ID,									
		ma.Vorname,
		ma.Nachname,
		ma.Straße,
		ma.PLZ,
		ma.Ort,
		ma.Telefon,
		ma.Handy,
		ma.Email,
		date_format(ma.Geburtsdatum,'%d.%m.%Y') AS Geb_formated,
		kn.Kunden,
		n.Laender,
		n.Counter
	FROM 
		anrede AS anr,
		nationalitaet AS n,									 
		mitarbeiter AS ma
		INNER JOIN( einsatzort AS eo
					      INNER JOIN 
							Kunden AS kn
						ON
							eo.Kunden_ID = kn.Kunden_ID)
						ON 
							ma.Personal_ID = eo.Personal_ID
	WHERE
	   	  ma.Anrede_ID = anr.Anrede_ID 
	    AND
	          ma.Nationalitaet_ID = n.Counter 
	    AND
		 ma.Vorname = ".@$_POST['vn']."
	    AND
		 ma.Nachname = ".@$_POST['nn']."
...

nun möchte ich aber nach Abändern der Daten Ein Update über die gleiche Relation durchführen... aber 1 zu 1, kann ich das nicht übernehmen, wie ich das bei der SELECT-Anweisung gemacht habe.

ich mache das immer separat mit
SQL:
UPDATE 
	mitarbeiter AS ma, anrede AS anr
SET 
	ma.Anrede_ID = '".$_POST["anr"]."',
	ma.Vorname = '".$_POST["vn"]."',
	ma.Nachname = '".$_POST["nn"]."',
	ma.Straße = '".$_POST["str"]."',
	ma.PLZ = '".$_POST["plz"]."',
	ma.Ort = '".$_POST["ort"]."',
	ma.Telefon = '".$_POST["tel"]."',
	ma.Handy = '".$_POST["mobi"]."',
	ma.Email = '".$_POST["mail"]."',
	ma.Geburtsdatum = str_to_date('".$_POST['geb']."','%d.%m.%Y'),
	ma.Nationalitaet_ID = '".$_POST["nation"]."'
WHERE
	ma.Anrede_ID = anr.Anrede_ID
    AND
	Vorname = ".$_POST['vn']."
    AND
	Nachname = ".$_POST['nn']."
SQL:
UPDATE
	einsatzort
SET 
	Personal_ID = ".$tmpID.", 
	Kunden_ID = ".$_POST[$key]

Nun habe ich dynamisch neue Selectboxen in PHP erzeugt und würde gerne zusätzlich mit
INSERT INTO... SET... ON DUPLICATE KEY UPDATE... arbeiten und das ebend über eine M:N-Relation
und hab folgendes gebastelt, was aber leider nicht funktioniert!
SQL:
INSERT INTO	
	  mitarbeiter AS ma, 
	  anrede AS anr
  SET 
	  ma.Anrede_ID = '".$_POST["anr"]."',
	  ma.Vorname = '".$_POST["vn"]."',
	  ma.Nachname = '".$_POST["nn"]."',
	  ma.Straße = '".$_POST["str"]."',
	  ma.PLZ = '".$_POST["plz"]."',
	  ma.Ort = '".$_POST["ort"]."',
	  ma.Telefon = '".$_POST["tel"]."',
	  ma.Handy = '".$_POST["mobi"]."',
	  ma.Email = '".$_POST["mail"]."',
	  ma.Geburtsdatum = str_to_date('".$_POST['geb']."','%d.%m.%Y'),
	  ma.Nationalitaet_ID = '".$_POST["nation"]."'
FROM	
	  INNER JOIN(einsatzort AS eo
					INNER JOIN 
							Kunden AS kn
						ON
							eo.Kunden_ID = kn.Kunden_ID)
						ON 
							ma.Personal_ID = eo.Personal_ID
 WHERE
	  ma.Anrede_ID = anr.Anrede_ID
  AND
	  Vorname = ".$_POST['vn']."
  AND
	  Nachname = ".$_POST['nn']." 
  ON DUPLICATE KEY UPDATE 
	 ma.Personal_ID=LAST_INSERT_ID(ma.Personal_ID)
Da taucht folgende Fehlermeldung auf:
Notice: Undefined variable: update in C:\xampp\htdocs\MA-Update.php on line 126
Error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS ma, anrede AS anr SET ma.Anrede_ID = ' at line 2

Ich hab kein Schimmer, wo ich nun die beiden INNER JOINS hin tun muss, damit es auch geht. Habt ihr ne Idee?

Gruß.
 
Zuletzt bearbeitet:
Zurück