INSERT INTO ... SELECT

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 : INSERT INTO ... SELECT

Re: INSERT INTO ... SELECT

par jojolapine » 07 sept. 2009, 11:04

Merci merci!!!
C'était bien ça ;)
Bon maintenant j'ai d'autres soucis de clefs uniques vu que les vieilles tables était pas top...
M'enfin ceci est un autre sujet ;)

EDIT: Pour infos, j'ai résolu le problème des clés uniques dans ma nouvelle table, en rajoutant un GROUP BY dans mon select:
INSERT INTO `new_table` (
`id_owner` ,
`id_user` ,
`type`
) SELECT ot1.user, ot1.idpresta, ot2.type
FROM old_table1 AS ot1, old_table2 AS ot2
WHERE ot1.id_user = ot2.id
GROUP BY id_owner,id_user

Re: INSERT INTO ... SELECT

par Cobaye » 07 sept. 2009, 10:38

INSERT INTO `new_table` (
`id_owner` ,
`id_user` ,
`type`
) SELECT ot1.user, ot1.idpresta, ot2.type
FROM old_table1 AS ot1, old_table2 AS ot2
WHERE ot1.id_user = ot2.id
autant que je me souviennes quand tu veux insérer le contenu d'une requête tu met pas VALUES mais directement la requete.

INSERT INTO ... SELECT

par jojolapine » 07 sept. 2009, 10:30

Bonjour à tous,
Je cherche à faire quelque chose qui me parait assez simple...
Pour les besoins d'une migration, je doit insérer les données de deux tables (via jointure) dans une troisième nouvelle table...
Disons que nous avons ceci:

Code : Tout sélectionner

old_table1 ---------- id id_owner id_user old_table2 ---------- id type ... new_table --------- id id_owner id_user type
Voilà la requête que j'ai essayé, sans succès:
INSERT INTO `new_table` (
`id_owner` ,
`id_user` ,
`type`
)
VALUES (
SELECT ot1.user, ot1.idpresta, ot2.type
FROM old_table1 AS ot1, old_table2 AS ot2
WHERE ot1.id_user = ot2.id
)
Est-il possible de bidouiller ma requête pour que ça fonctionne? (jointure explicite, table temporaire, etc...)
Ou est-ce que je dois me résoudre à faire un petit script php?

Merci d'avance pour vos lumières ;)