1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2017
    Messages : 2
    Points : 1
    Points
    1

    Par défaut Mettre à jour une colonne, SUM() et LIMIT

    Bonjour,


    J'ai deux tables dans la premiere table il y'a 150 points et une colonne distance_totale qui est vide:

    exemple de structure de la première table:

    Point1, Distance_totale
    1 
    2
    3
    4
    5
    
    etc...

    Dans ma deuxième table j'ai calculé la distance entre tous les points de ma première table, (soit une combinaison de 150*150 car il y'a 150 points).

    exemple de structure de la deuxième table:

    Point1, Point2, Distance
    1,           1,          0
    1,           2,          3.25
    1,           3,          22.12
    1,           4,          41.1
    1,           5,          59.78
    2,           1,          52
    2,           2,          0
    2,           3,          42.96
    2,           4,          10.36
    
    etc...

    Maintenant je souhaite mettre à jour ma deuxième table, la colonne Distance_totale doit valoir la somme des distances des 3 points les plus proches de chaque point. J'ai donc rédigé la requête suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WITH res as (select distance from shema.tables2 order by distance asc limit 3)
    UPDATE  shema.table1 b  set distance_totale = (select sum(res.distance) from res where res.point1=b.point1);
    Alors ça ne marche pas, pouvez-vous m'aider svp ?

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 405
    Points : 22 428
    Points
    22 428

    Par défaut

    Citation Envoyé par lina2 Voir le message
    Alors ça ne marche pas
    Cela ne suffit pas à décrire le problème rencontré

    Y a-t-il une erreur à l'exécution ? Quel est le message associé ?
    Le résultat obtenu ne correspond pas à celui qui était attendu ? Quelles sont les valeurs obtenues ? attendues ?

    Dernière question, qui peut orienter la résolution : quelle est la version de PostgreSQL ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2017
    Messages : 2
    Points : 1
    Points
    1

    Par défaut

    Merci pour votre réponse.

    quand j'exécute la requête j'ai la réponse suivante:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR: column res.point1 does not exist LINE 3: ...distance_totale = (select sum(res.distance) from res where res.point1=b....

    Et c'est tout à fait logique car dans res il n'ya qu'une seule colonne (distance). Mais j'arrive pas à corriger ma requête pour avoir le bon résultat. Je précise que j'ai ajouté la condition where res.point1=b.point1 pour mettre à jour toute la colonne.
    Le résultat attendu est: la colonne Distance_totale doit valoir la somme des distances des 3 points les plus proches de chaque point.

    Concernant la version de postgresql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PostgreSQL 9.5.6 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609, 64-bit

Discussions similaires

  1. mettre à jour une colonne d'une table
    Par gastoncs dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/03/2012, 13h45
  2. Réponses: 3
    Dernier message: 05/08/2011, 10h36
  3. Mettre à jour une colonne à partir d'une autre
    Par Peanut dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/06/2011, 18h19
  4. Mettre à jours une colonne CLOB dans une tabel
    Par proDZ dans le forum Oracle
    Réponses: 4
    Dernier message: 20/08/2009, 11h53
  5. impossible de mettre à jour une colonne.
    Par yass dans le forum MS SQL-Server
    Réponses: 7
    Dernier message: 18/06/2009, 09h58

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