2012-07-12 6 views
2

J'ai deux tables: employee et employee_group. Après insertion dans la première table, j'obtiendrai le dernier identifiant inséré de cette table. Ensuite, j'ai besoin d'insérer au tableau employee_group. SQL:Mysql pas insérer des enregistrements

INSERT INTO employee_group (employee_id, group_id) 
    SELECT {$currentEmpId}, group_id 
    FROM employee_group 
    WHERE employee_id = {$anyId} 

MySQL a été renvoyé TRUE. Mais les enregistrements n'ont pas été insérés.

J'ai noté que si essayer d'insérer des enregistrements pour l'employé inséré précédent, la requête sera réussie. Exemple:

  1. Insérer à l'employé, retournera $currentEmpId en dernier id Inséré
  2. INSERT INTO employee_group (employee_id, group_id) SELECT {$currentEmpId - 1}, group_id FROM employee_group WHERE employee_id = {$anyEmpId}

Ou si j'ai essayé dossiers d'insertion pour les employés et précédante en même temps, alors première requête sera infructueuse mais deuxième requête ok.

La base de données n'a pas de déclencheurs, de clés étrangères ou de fonctions. Rien, juste des données.

Je suis dans une impasse. UPD: Si je prends des enregistrements à php variable alors foreach it et insérer chaque enregistrement comme un élément comme INSERT INTO employee_group (employee_id, group_id) VALUES (xxx, yyy) Je vais avoir ce problème aussi.

+0

Qu'est-ce que le rapport du journal? – Peon

+0

'{$ currentEmpId - 1}' va provoquer une erreur de syntaxe PHP, et certainement provoquer une erreur de syntaxe sql. –

+0

Je suis désolé pour ce code, vraiment il y a 'sprintf (" .. SELECT% u .. ", $ currentEmpId - 1)' mais je l'ai remplacé pour mieux comprendre. – diNord

Répondre

-2

Essayez cette

INSERT INTO employee_group (employee_id, group_id) 
    VALUES({$toEmpId},{SELECT {$toEmpId}, group_id FROM employee_group WHERE employee_id = {$fromEmpId}}) 
+0

Vous essayez d'insérer 3 valeurs dans 2 colonnes ici. – lafor

+0

Voilà soOoOooooooo ne va pas travailler .... 3 valeurs dans un 2 champs, et je ne sais pas comment vous attendez un select pour travailler là-bas, plus ceux supplémentaires {} sont une erreur de syntaxe, etc ... etc ... etc ... –

2
INSERT INTO employee_group (employee_id, group_id) 
    VALUES({$toEmpId},{SELECT group_id FROM employee_group WHERE employee_id = {$fromEmpId}}) 

Check it out ..

+0

Je ne suis pas sûr de ce que mysql permet d'insérer de nombreux enregistrements de l'autre table de cette façon. J'ai essayé votre sql mais ai une erreur de syntaxe. – diNord

Questions connexes