1. #1
    Candidat au Club
    Homme Profil pro
    Geek Data
    Inscrit en
    septembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Geek Data

    Informations forums :
    Inscription : septembre 2017
    Messages : 2
    Points : 2
    Points
    2

    Par défaut Update avec count et jointure

    Bonjour à tous,

    Gros problème de SQL et gros blocage

    J'ai 3 tables : Accident, Véhicule, Usager
    Accident contient accident_id
    Véhicule contient vehicule_id, accident_id, categ_adm_id
    Usager contient usager_id, vehicule_id, accident_id, gravite

    Je dois compter le nombre d'usagers étant blessés dans un accident en un vélo.
    velo étant categ_adm_id = 7
    blessé étant gravite = 3

    Pour cela, j'ai réaliser cette requête, mais je me retrouve avec le total de mon COUNT écrit sur l'ensemble de mes lignes dans ma table. J'en déduis qu'il faut ajouter une clause where dans mon update mais je n'y arrive pas du tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE fait_acc_staging SET nb_velo = (SELECT COUNT((fait_usager.usager_id)) FROM fait_usager
    INNER JOIN fait_acc_staging ON fait_acc_staging.accident_id = fait_usager.accident_id 
    INNER JOIN fait_vehicule ON fait_usager.vehicule_id = fait_vehicule.vehicule_id 
    WHERE fait_usager.gravite = (3) AND fait_vehicule.categ_adm_id = (7));
    Si quelqu'un peut m'aider, ça serait avec une énorme remerciement.
    En vous remerciant par avance.

    Patria

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    août 2008
    Messages
    2 624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 2 624
    Points : 5 068
    Points
    5 068

    Par défaut

    Vous pouvez essayez avec MERGE, un peu comme ça aux erreurs de syntaxe près :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    merge into fait_acc_staging fas
    using (SELECT fu.accident_id, COUNT(fu.usager_id) as cnt
             FROM fait_usager fu
            INNER JOIN fait_vehicule fv
               ON fu.vehicule_id = fv.vehicule_id 
            WHERE fu.gravite = 3 
              AND fv.categ_adm_id = 7
            group by fu.accident_id
          ) u
       on (fas.accident_id = fu.accident_id )
     when matched then update
      SET fas.nb_velo = u.cnt

  3. #3
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Recherche, formation, développement
    Inscrit en
    août 2006
    Messages
    1 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Mali

    Informations professionnelles :
    Activité : Recherche, formation, développement

    Informations forums :
    Inscription : août 2006
    Messages : 1 468
    Points : 3 172
    Points
    3 172
    Billets dans le blog
    7

    Par défaut

    Salut
    PostgreSQL ne support pas le mot clé MERGE pour le moment. A la place il faut utiliser ON CONFLICT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    INSERT into fait_acc_staging fas
    SELECT COUNT(fu.usager_id) as cnt
             FROM fait_usager fu
            INNER JOIN fait_vehicule fv
               ON fu.vehicule_id = fv.vehicule_id 
            WHERE fu.gravite = 3 
              AND fv.categ_adm_id = 7
            group by fu.accident_id
          ON CONFLICT accident_id
    DO UPDATE  SET fas.nb_velo = EXCLUDED.nb_velo
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    août 2008
    Messages
    2 624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 2 624
    Points : 5 068
    Points
    5 068

    Par défaut

    Ok, j'avais vu cette doc, mais je viens de voir que c'est marqué develDocumentation, donc c'est peut être pas encore implémenté

Discussions similaires

  1. [MySQL-5.7] Update avec subquery et jointures
    Par franckysolo dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/11/2017, 13h26
  2. Requête avec COUNT et jointure
    Par xtremdisc dans le forum Requêtes
    Réponses: 6
    Dernier message: 03/07/2011, 16h21
  3. Update avec alias et jointure
    Par olibara dans le forum MS SQL-Server
    Réponses: 16
    Dernier message: 26/03/2011, 19h00
  4. Update avec count
    Par baboun007 dans le forum Access
    Réponses: 4
    Dernier message: 22/12/2006, 12h10
  5. [PL/SQL] update avec jointure
    Par Fox_magic dans le forum Oracle
    Réponses: 6
    Dernier message: 09/12/2004, 13h19

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