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 :

Besoin d'aide pour l'insertion d'une valeur de clé étrangère


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 53
    Points : 46
    Points
    46
    Par défaut Besoin d'aide pour l'insertion d'une valeur de clé étrangère
    Bonjour à tous
    j'ai les deux tables suivantes :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE base_iles_1.releves_aspects_anthropiques
    (
      id_releves_aspects_anthropiques integer NOT NULL DEFAULT nextval('base_iles_1.releves_aaspects_anthropiques_id_releves_aspects_anthropiqu_seq'::regclass),
      date_debut_releves_aspects_anthropiques date,
      date_fin_releves_aspects_anthropiques date,
      id_ilot integer NOT NULL,
      CONSTRAINT releves_aspects_anthropique_pk PRIMARY KEY (id_releves_aspects_anthropiques),
      CONSTRAINT releves_aspects_anthropique_ilot_fk FOREIGN KEY (id_ilot)
          REFERENCES base_iles_1.ilot (id_ilot) MATCH SIMPLE
          ON UPDATE CASCADE ON DELETE NO ACTION,
      CONSTRAINT date_debut_date_fin_releves_aspects_anthropiques_ilot UNIQUE (date_debut_releves_aspects_anthropiques, date_fin_releves_aspects_anthropiques, id_ilot)
    )


    Et la deuxième table :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    CREATE TABLE base_iles_1.observation_aspects_anthropiques
    (
      id_observation_aspects_anthropiques integer NOT NULL DEFAULT nextval('base_iles_1.observation_aspects_anthropiq_id_observation_aspects_anthro_seq'::regclass),
      id_releves_aspects_anthropiques integer NOT NULL,
      id_type_observation_aspects_anthropique integer NOT NULL,
      detaits_observation_aspects_anthropique text,
      CONSTRAINT observation_aspects_anthropiques_pk PRIMARY KEY (id_observation_aspects_anthropiques),
      CONSTRAINT observation_aspects_anthropiques_releves_fk FOREIGN KEY (id_releves_aspects_anthropiques)
          REFERENCES base_iles_1.releves_aspects_anthropiques (id_releves_aspects_anthropiques) MATCH SIMPLE
          ON UPDATE CASCADE ON DELETE NO ACTION,
      CONSTRAINT observation_aspects_anthropiques_type_fk FOREIGN KEY (id_type_observation_aspects_anthropique)
          REFERENCES base_iles_1.type_observation_aspects_anthropiques (id_type_observation_aspects_anthropique) MATCH SIMPLE
          ON UPDATE CASCADE ON DELETE NO ACTION,
      CONSTRAINT observation_aspects_anthropiques_releves_type_detaits UNIQUE (id_releves_aspects_anthropiques, id_type_observation_aspects_anthropique, detaits_observation_aspects_anthropique)
    )


    Et je souhaite faire une insertion dans la deuxième table , si je neconnais pas la valeur de id_releves_aspects_anthropiques qui fait référence à la première table(mais je connais le date_debut et date_fin et id_ilot) :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO base_iles_1.observation_aspects_anthropiques(
                id_releves_aspects_anthropiques, 
                id_type_observation_aspects_anthropique, detaits_observation_aspects_anthropique)
        VALUES ('select id_releves_aspects_anthropiques from releves_aspects_anthropiques 
        where date_debut_releves_aspects_anthropiques ="01/01/2008" 
        and date_fin_releves_aspects_anthropiques ="01-01-2008" and id_ilot =  1', 
                63, 'texte à inserer ');

    Il m'affiche l'erreur suivant :
    syntaxe en entrée invalide pour l'entier : « select id_releves_aspects_anthropiques from releves_aspects_anthropiques
    where date_debut_releves_aspects_anthropiques ="01/01/2008"
    and date_fin_releves_aspects_anthropiques ="01-01-2008" and id_ilot = 1 »
    LINE 4: VALUES ('select id_releves_aspects_anthropiques from rel...

    Aidez moi svp
    Merci en avance

  2. #2
    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 548
    Points
    52 548
    Billets dans le blog
    5
    Par défaut
    Pour insérer, soit vous faites un VALUE avec des valeurs scalaires, soit vous faites une sous requête. mais pas les deux !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO base_iles_1.observation_aspects_anthropiques(
                id_releves_aspects_anthropiques, 
                id_type_observation_aspects_anthropique, detaits_observation_aspects_anthropique)
    select id_releves_aspects_anthropiques, 63, 'texte à inserer '
    from releves_aspects_anthropiques 
    where date_debut_releves_aspects_anthropiques ="01/01/2008" 
        and date_fin_releves_aspects_anthropiques ="01-01-2008" and id_ilot =  1;
    Apprenez le langage SQL : http://sqlpro.developpez.com/cours/sqlaz/dml/#LII-E

    A +
    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/ * * * * *

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 53
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Pour insérer, soit vous faites un VALUE avec des valeurs scalaires, soit vous faites une sous requête. mais pas les deux !


    A +
    Merci d'avoir répondre
    ça marche pas , pour bien expliquer mon problème : je veux inserer une ligne dans la table Observation_aspects_anthropiques , par exemple les valeurs suivants (id_releves_aspects_anthropiques,5,3) ,id_relèves_aspects_anthropiques je doit le sectionner sa valeur d'une autre table donc je le remplace par la requête suivante:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select id_releves_aspects_anthropiques from releves_aspects_anthropiques 
        where date_debut_releves_aspects_anthropiques ="01/01/2008" 
        and date_fin_releves_aspects_anthropiques ="01-01-2008" and id_ilot =  1


    voir l'image ci-dessous
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/10/2008, 14h45
  2. besoin d'aide pour la création d'une requête
    Par fabien59420 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 11/06/2008, 15h29
  3. Réponses: 3
    Dernier message: 26/06/2007, 14h53
  4. Réponses: 2
    Dernier message: 10/03/2006, 13h55

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