INSERT avec SELECT

J’ai une requête qui insère en utilisant un select:

INSERT INTO courses (name, location, gid) SELECT name, location, gid FROM courses WHERE cid = $cid 

Est-il possible de ne sélectionner que “name, location” pour l’insertion et de définir gid sur autre chose dans la requête?

Oui, absolument, mais vérifiez votre syntaxe.

 INSERT INTO courses (name, location, gid) SELECT name, location, 1 FROM courses WHERE cid = 2 

Vous pouvez mettre une constante du même type que gid à sa place, pas seulement 1, bien sûr. Et, je viens de composer la valeur de cid .

Oui, ça l’est. Tu peux écrire :

 INSERT INTO courses (name, location, gid) SELECT name, location, 'whatever you want' FROM courses WHERE cid = $ci 

ou vous pouvez obtenir des valeurs d’une autre jointure de la sélection …

Corriger la syntaxe: choisir l’orthographe était faux

 INSERT INTO courses (name, location, gid) SELECT name, location, 'whatever you want' FROM courses WHERE cid = $ci 

Bien sûr, que voulez-vous utiliser pour le gid? une valeur statique, PHP var, …

Une valeur statique de 1234 pourrait être comme:

 INSERT INTO courses (name, location, gid) SELECT name, location, 1234 FROM courses WHERE cid = $cid 

Je pense que votre instruction INSERT est incorrecte, voir la syntaxe correcte: http://dev.mysql.com/doc/refman/5.1/en/insert.html

edit: comme Andrew l’a déjà souligné …

La bonne syntaxe pour votre requête est la suivante:

 INSERT INTO courses (name, location, gid) SELECT (name, location, gid) FROM courses WHERE cid = $cid