IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

SELECT imbriqué dans un INSERT


Sujet :

Requêtes PostgreSQL

  1. #1
    Candidat au Club
    Femme Profil pro
    Full Stack
    Inscrit en
    Août 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Full Stack

    Informations forums :
    Inscription : Août 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut SELECT imbriqué dans un INSERT
    Bonjour à tous !

    J'ai une question qui peut paraître toute bête mais malgré mes recherches et mes nombreux essais j'ai toujours la même erreur..
    Je souhaiterai faire un INSERT dans ma BDD et l'une des valeurs vient d'un SELECT. J'ai lu sur différentes autres conversations la marche à suivre et même en recopiant exactement ce qui y est marqué cela ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO public."RelPersonLE"(
    "FKidPerson", "FKidLE", "FKidOperation")
    SELECT (1, "id" FROM "LegalEntities" WHERE "nameShort"='nameLE', 652);
    Et j'ai un erreur de syntaxe sur le FROM :

    ERROR: ERREUR: erreur de syntaxe sur ou près de « FROM »
    LINE 3: SELECT (1, "id" FROM "LegalEntities" WHERE "nameShort"='AS...


    Merci beaucoup pour votre aide !!!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Il semble y avoir deux erreurs dans ta requete
    • Ton select et ton insert n'ont pas le même nombre de colonne (3 colonnes spécifié dans l'ordre insert, 2 colonnes spécifiées dans le select)
    • Il ne faut pas de parenthèse après le select

    Ce qui pourrait donner quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO public."RelPersonLE"
    ("FKidPerson", "FKidLE", "FKidOperation")
    SELECT 1, "id", 'Mon Operation' FROM "LegalEntities" WHERE "nameShort"='nameLE', 652;
    ou si tu ne connais pas l'opération et que la colonne est facultative.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO public."RelPersonLE"
    ("FKidPerson", "FKidLE")
    SELECT 1, "id" FROM "LegalEntities" WHERE "nameShort"='nameLE', 652;
    Il peut y avoir d'autres problème selon la structure de tes tables mais vu qu'on ne la connait pas, on ne peut pas te les dire.
    cordialement
    Soazig

  3. #3
    Candidat au Club
    Femme Profil pro
    Full Stack
    Inscrit en
    Août 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Full Stack

    Informations forums :
    Inscription : Août 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci pour ta réponse rapide. Seulement j'ai bien 3 données dans mon INSERT et dans mon SELECT :
    FKidLE=1,
    FKidPerson="id" FROM "LegalEntities" WHERE "nameShort"='nameLE' (ma requête)
    FKidOperation = 652

    Concernant les parenthèses j'ai essayé les deux :
    • Avec : l'erreur de syntaxe se trouve au niveau du FROM
    • Sans : l'erreur de syntaxe se trouve au niveau de la deuxième virgule


    Pour plus d'information sur cette table, il s'agit d'une table de jointure entre ma table Person et ma table LE (une Person peut appartenir à plusieurs LE et chaque LE héberge plusieurs Person)

    J'ai testé d'inverser l'ordre entre FKidLE, FKidPerson et FKidOperation mais cela ne change rien.
    Je ne vois vraiment pas d'où vient l'erreur de syntaxe et faire cette correspondance à la main prendrait un temps incroyable.

  4. #4
    Candidat au Club
    Femme Profil pro
    Full Stack
    Inscrit en
    Août 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Full Stack

    Informations forums :
    Inscription : Août 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    J'ai modifié complètement et fait la requête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO public."RelPersonLE"(
    "FKidPerson", "FKidLE", "FKidOperation")
    VALUES (1, (SELECT "id" FROM "LegalEntities" WHERE "nameShort"='nameLE'), 652);
    Et cela fonctionne correctement.

    Merci en tout cas de ton aide Soazig !

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Je n'avais pas prété attention au 652, qui est la 3ème colonne de l'insert.
    il suffisait donc de modifier ta requete ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO public."RelPersonLE"
    ("FKidPerson", "FKidLE", "FKidOperation")
    SELECT 1, "id", 652 FROM "LegalEntities" WHERE "nameShort"='nameLE';
    Le select est un select comme un autre, il faut qu'il fonctionne indépendamment de l'insert
    Cordialement
    Soazig

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Ch_aCh_a Voir le message
    Bonjour à tous !

    J'ai une question qui peut paraître toute bête mais malgré mes recherches et mes nombreux essais j'ai toujours la même erreur..
    Je souhaiterai faire un INSERT dans ma BDD et l'une des valeurs vient d'un SELECT. J'ai lu sur différentes autres conversations la marche à suivre et même en recopiant exactement ce qui y est marqué cela ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO public."RelPersonLE"(
    "FKidPerson", "FKidLE", "FKidOperation")
    SELECT (1, "id" FROM "LegalEntities" WHERE "nameShort"='nameLE', 652);
    Et j'ai un erreur de syntaxe sur le FROM :

    ERROR: ERREUR: erreur de syntaxe sur ou près de « FROM »
    LINE 3: SELECT (1, "id" FROM "LegalEntities" WHERE "nameShort"='AS...


    Merci beaucoup pour votre aide !!!
    Apprenez le langage SQL :
    https://sqlpro.developpez.com/cours/sqlaz/dml/#LII-F
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. requête SELECT imbriquée dans INSERT
    Par bensh dans le forum JDBC
    Réponses: 0
    Dernier message: 23/10/2017, 23h08
  2. [2012] Comment faire un select imbriqué dans un insert ?
    Par jmclej dans le forum Développement
    Réponses: 4
    Dernier message: 18/03/2017, 17h33
  3. [AC-2000] Select imbriqué dans insert
    Par Qinqin dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/09/2010, 09h14
  4. SELECT imbriqué dans INSERT
    Par vidad10 dans le forum Requêtes
    Réponses: 2
    Dernier message: 23/09/2010, 18h17
  5. Recupérer la valeur d'un select imbriqué dans un update
    Par miniil dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/07/2006, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo