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 :

requete update select


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 189
    Points : 103
    Points
    103
    Par défaut requete update select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    update matable a 
    set champ = (
      select (p1.id1) 
      from bat1
       p1,
      bat2 p2  
    where p1.id1=p2.id2)
    bonjour je veux mettre a jour mon champ de ma table
    mais la requete me renvoie
    plusieurs valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select (p1.id1) 
    from bat1 p1,
    bat2 p2 
     where p1.id1 = p2.id2
    comment faire merci
    ERROR: more than one row returned by a subquery used as an expression

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    C'est sûr que ta requête est très mal foutue !

    Commence par utiliser la syntaxe normlisée depuis 1992 pour les jointures, ce sera déjà plus propre.

    A supposer que la sous-requête ne renvoie qu'une seule valeur, ce qui n'est pas le cas, la requête UPDATE va mettre cette valeur dans toute la colonne 'champ'.

    Au passage, une table est constituée de lignes et de colonnes.
    Un champ peut être considéré comme l'intersection d'une ligne et d'une colonne, c'est à dire une valeur particulière d'une colonne.

    Si tu nous disais plus concrêtement ce que tu veux faire, en évitant l'abstraction avec des 'matable' et des 'champ' qui ne sont probablement pas les vrais noms de ta table et de ta colonne ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 189
    Points : 103
    Points
    103
    Par défaut voila la requete
    Citation Envoyé par CinePhil Voir le message
    C'est sûr que ta requête est très mal foutue !

    Commence par utiliser la syntaxe normlisée depuis 1992 pour les jointures, ce sera déjà plus propre.

    A supposer que la sous-requête ne renvoie qu'une seule valeur, ce qui n'est pas le cas, la requête UPDATE va mettre cette valeur dans toute la colonne 'champ'.

    Au passage, une table est constituée de lignes et de colonnes.
    Un champ peut être considéré comme l'intersection d'une ligne et d'une colonne, c'est à dire une valeur particulière d'une colonne.

    Si tu nous disais plus concrêtement ce que tu veux faire, en évitant l'abstraction avec des 'matable' et des 'champ' qui ne sont probablement pas les vrais noms de ta table et de ta colonne ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    update parcelles_nimes a  
    set bati_ok = (
      select b1.id_parc 
      from parc_nimes_bati b1, parcelles_nimes b2 
      where b1.id_parc = b2.id_parc 
    ) 
     where a.id_parc = b1.id_parc
    erreur sur b1.id_parc
    comme on fait merci !

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    En utilisant la syntaxe normalisée depuis 1992 pour les jointures, ta requête simplifiée deviendrait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE parcelles_nimes a
    INNER JOIN parc_nimes_bati b1 ON b1.id_parc = a.id_parc
    SET bati_ok = b1.id_parc
    Cette requête met id_parc dans la colonne bati_ok !
    bati_ok est plutôt une colonne booléenne non ?

    Donc... bis repetita :
    Si tu nous disais plus concrêtement ce que tu veux faire ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [Débutant] Erreur Requete UPDATE + Select
    Par progscoubi dans le forum C#
    Réponses: 5
    Dernier message: 06/11/2011, 19h47
  2. requete update avec select imbriqué
    Par mikees dans le forum SQL
    Réponses: 3
    Dernier message: 09/02/2009, 17h42
  3. jointure de deux requetes update et select sous vba access
    Par nadia123456 dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/09/2008, 08h15
  4. Requete UPDATE SELECT ect KO
    Par karement dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/07/2008, 19h38
  5. Requete Update avec Select imbriqué: etrange resultat!
    Par corentone dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/08/2007, 15h05

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