Requête INSERT avec SELECT et autres valeurs.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requête INSERT avec SELECT et autres valeurs.

par Berzemus » 09 nov. 2007, 12:27

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

merci :agenouille:

Re: Requête INSERT avec SELECT et autres valeurs.

par Hubert Roksor » 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

par Berzemus » 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

par d0m » 09 nov. 2007, 12:03

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

Requête INSERT avec SELECT et autres valeurs.

par Berzemus » 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.