Requête INSERT avec SELECT et autres valeurs.

ViPHP
ViPHP | 4039 Messages

09 nov. 2007, 11:29

Salut les gars,

je me demandais s'il était possible d'effectuer un insert, mais avec des valeurs de sources diverses (par select et d'autres en dur).

In casu: j'ai une table de 6 champs, les 4 premiers sont récupérés par un select, mais pour les 2 derniers, j'ajoute les valeurs en dur (aucune pour le champ autoincrémenté et un 0 pour un champ bool).

je bute sur la façon d'ajouter les deux dernières valeurs aux valeurs retournées par le select..

J'ai pas encore entièrement intégré la logique SQL, mais voilà ce qui me semble logique:

Code : Tout sélectionner

INSERT INTO jacky (1,2,3,4,5,6) VALUES ((SELECT 1,2,3,4 FROM henri),5,6);
merci.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

d0m
Mammouth du PHP | 1141 Messages

09 nov. 2007, 12:03

le meilleur moyen de savoir reste de tenter d'executer la requête...

ViPHP
ViPHP | 4039 Messages

09 nov. 2007, 12:09

ben..
INSERT INTO jacky( 1, 2, 3, 4, 5,6)
VALUES ((SELECT 1, 2, 3, 4
FROM henri
INNER JOIN souper ON x = y
ORDER BY 2 DESC
LIMIT 1), 5, 6)
me retourne:
#1136 - Column count doesn't match value count at row 1
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

09 nov. 2007, 12:18

Voici comment le serveur conçoit la requête

Code : Tout sélectionner

INSERT INTO jacky (col1,col2,col3,col4,col5,col6) VALUES (?,?,?,?,?,?)
Chaque ? peut être remplacé par un nombre, une chaîne, une sous-requêtes, une variable, etc... mais une sous-requête ne pourra pas "prendre le place" de plusieurs ?
Tu peux néanmoins utiliser une variante d'INSERT, INSERT ... SELECT. Là encore, la requête doit correspondre à

Code : Tout sélectionner

INSERT INTO jacky (col1,col2,col3,col4,col5,col6) SELECT ?,?,?,?,?,?
...mais puisque tu peux mélanger colonnes et valeurs "en dur" dans ton SELECT, tu peux arriver à ce que tu cherches, en l'occurence

Code : Tout sélectionner

INSERT INTO jacky (col1,col2,col3,col4,col5,col6) SELECT col1, col2, col3, col4, 5, 6 FROM table

ViPHP
ViPHP | 4039 Messages

09 nov. 2007, 12:27

wéééééé !!! ça rokse à fond..

merci :agenouille:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.