Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 22/02/2013 01:33:21
- colleter
- Membre
coller enregistrement d'une ligne dans une autre
Bonjour,
j'ai une table avec plusieurs enregistrements et je souhaiterai copier des valeurs de variables pour une ligne dans une autre ligne. J'ai tente plusieurs choses dt l'idee est:
insert into models_list (author,contact,model_year_begin,model_year_end) where model_number=335 values
(select author,contact,model_year_begin,model_year_end from models_list where model_number=252);
mais ca ne marche pas.
Avez-vous une idee pour resoudre ce probleme?
merci
Hors ligne
#2 22/02/2013 10:47:59
- rjuju
- Administrateur
Re : coller enregistrement d'une ligne dans une autre
Bonjour,
Cette requête vous convient ?
INSERT INTO models_lists (model_number,author,contact,model_year_begin,model_year_end) SELECT 355,author,contact,model_year_begin,model_year_end from models_list where model_number=252
Julien.
https://rjuju.github.io/
Hors ligne
#3 22/02/2013 19:14:58
- colleter
- Membre
Re : coller enregistrement d'une ligne dans une autre
hello,
c'est parfait, ca marche!
merci beaucoup pour le coup de main
Mat
Hors ligne
#4 26/02/2013 00:33:23
- colleter
- Membre
Re : coller enregistrement d'une ligne dans une autre
en fait, la requete ne me convient pas car je ne souhaite pas creer de nouvel enregistrement mais coller ds une ligne deja existante des valeurs de variables provenant d'une autre ligne deja existante.
Ainsi dans la requete que vous m'envoyez:
INSERT INTO models_lists (model_number,author,contact,model_year_begin,model_year_end) SELECT 355,author,contact,model_year_begin,model_year_end from models_list where model_number=252
je ne veux pas creer de nouvel enregistrement 355 mais importer de l'enregistrement 252 les valeurs des variables author,contact,model_year_begin,model_year_end dans l'enregistrement 355 (une sorte de copier/coller de certaines variables d'une ligne a une autre). Sachant que model_number est ma cle primaire, si j'applique votre requete, cela viole la contrainte de cle primaire.
Auiez-vous la solution?
Merci
Hors ligne
#5 26/02/2013 17:48:21
- gleu
- Administrateur
Re : coller enregistrement d'une ligne dans une autre
Pour mettre à jour une ligne, il faut faire un UPDATE.
Guillaume.
Hors ligne
#6 28/02/2013 02:41:33
- colleter
- Membre
Re : coller enregistrement d'une ligne dans une autre
Bonjour,
ok j'ai fait un update:
update models_list set sum_all_consumption=(select sum_all_consumption from models_list where model_number=15) where model_number=355;
et ca marche
mais pour plusieurs variables, ca ne marche pas:
UPDATE models_list SET (sum_all_consumption,sum_all_exports,sum_all_resp_flows) = (SELECT sum_all_consumption,sum_all_exports,sum_all_resp_flows FROM models_list WHERE model_number=15) WHERE model_number=355;
ca me renvoit: ERREUR: erreur de syntaxe sur ou près de « SELECT »
LINE 1: ...onsumption,sum_all_exports,sum_all_resp_flows) = (SELECT sum...
^
********** Error **********
ERREUR: erreur de syntaxe sur ou près de « SELECT »
SQL state: 42601
Character: 84
je pense qu'il s'agit d'un truc a la con lie a une parenthese mais apres plusieurs tests pas de solution.
Pourriez-vous m'indiquer ou se trouve la boulette et comment la resoudre please?
merci
Hors ligne
#7 28/02/2013 21:19:01
- gleu
- Administrateur
Re : coller enregistrement d'une ligne dans une autre
La syntaxe est mauvaise. Essayez plutôt ceci :
UPDATE models_list SET
sum_all_consumption = copie.sum_all_consumption,
sum_all_exports = copie.sum_all_exports,
sum_all_resp_flows = copie.sum_all_resp_flows
FROM models_list copie
WHERE copie.model_number=15
AND models_list.model_number=355;
Guillaume.
Hors ligne
Pages : 1