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

Langage SQL Discussion :

Besoin d'aide pour une requête sql


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Besoin d'aide pour une requête sql
    Bonjour à tous,

    Depuis quelques heures j'essaie de faire une requête en vain. Je vais vous expliquer un peu la situation.

    J'ai deux tables (quand je marque '...' c'est qu'il y a des champs mais qui ne nous intéressent pas pour la requête) :

    equipement
    [equipement_id] ... [equipement_localisation] ...

    modification
    [modification_id][modification_date][modification_type]...[ref_equipement]


    Les deux champs id sont les clés primaires de leur table
    ref_equipement est une clé étrangère qui fait référence à equipement_id

    Donc en gros chaque équipement peut avoir plusieurs modifications, ces modifications ont un type et une date

    Je souhaite faire une requête qui me retourne :
    Par localisation le nombre d'equipement ayant une dernière date de modification supérieure à 12 mois et cette modification doit avoir comme modification_type : "auto"


    J'espère que quelqu'un pourra m'aider, mes compétences en SQL sont un peu rouillées n'ayant pas toucher ce langage depuis quelques mois !

    Bonne journée
    Théo

  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 874
    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 874
    Points : 53 048
    Points
    53 048
    Billets dans le blog
    6
    Par défaut
    Tout d'abord dans une base de données il n'y a pas de "champ"... Les champs c'est pour les patates ou pour les formulaires... Dans une table il y a des colonne et des lignes !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT equipement_localisation, --> par localisation
           COUNT(DISTINCT equipement_id) --> compter les équipements
    FROM   equipement AS E
           JOIN modification AS M 
              ON E.equipement_id = M.ref_equipement --> jointure et critères de jointure
    WHERE  NOT EXISTS(SELECT 0/0                  --> élimination modif de moins de 12 mois
                      FROM   modification AS M2
                      WHERE  M.ref_equipement = M2.ref_equipement
                         AND modification_date > DATEADD(month, -12, GETDATE()))
       AND modification_type = 'auto'; --> critère de modif auto
    A +

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 152
    Points : 1 939
    Points
    1 939
    Par défaut
    Bonjour,

    Quelle est ta BDD? Sur Oracle tu peux faire cette requête (à adapter pour une autre SGBD au niveau add_months certainement):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select e.equipement_localisation, count(*)
    from equipement e
    where exists (select 1 from modification m
                  where m.ref_equipement = e.equipement_id
                    and m.modification_date > add_months(sysdate, -12)
                  having max(modification_type) keep (dense_rank last order by modification_date) = 'auto'
                 ) 
    group by e.equipement_localisation;

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 311
    Points : 39 677
    Points
    39 677
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Les fonctions date sont assez différentes d'un SGBD à l'autre, par exemple ceci pour SQL server, à adapter pour d'autres SGHBD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select EQ.equipement_localisation
         , count(EQ.equipement_id)
    from equipement EQ
    where not exists
         (select 1
          from modification MO
          where MO.ref_equipement    = EQ.equipement_id
            and MO.modification_type = 'auto'
            and MO.modification_date > dateadd(year, -1, getdate())
         )
    group by EQ.equipement_localisation
    Je ne vois aucun mot réservé dans vos noms de tables et de colonne, du coup il est inutile de s'emm###r avec des crochet autour de ces noms

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos retours rapides,

    En effet j'ai oublié de préciser mon SGHBD, j'utilise Microsoft Access.
    Je vais essayer d'adapter vos propositions à Access.

    Je vous tiens au courant quant à ma réussite (ou non réussite :'( )

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 152
    Points : 1 939
    Points
    1 939
    Par défaut
    Windblows, je sais pas si ma requête va fonctionner du coup. Par contre, si je ne m'amuse, je ne pense pas que les 2 autre propositions s'assurent que la dernière modification en date soit de type 'auto'

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 311
    Points : 39 677
    Points
    39 677
    Billets dans le blog
    9
    Par défaut
    non : ma proposition consiste à vérifier s'il existe une modification de type "auto" dans les 12 derniers mois, ce qui n'est pas exactement la même chose, mais c'est l'expression de besoin que j'avais comprise
    À préciser le cas échéant

Discussions similaires

  1. Besoin d'aide pour une requête SQL
    Par p_oum dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 26/11/2009, 09h29
  2. Besoin d'aide pour une requête SQL
    Par sexy-meta dans le forum Langage SQL
    Réponses: 6
    Dernier message: 08/07/2008, 14h36
  3. Besoin d'aide pour une requête SQL
    Par FranckyVegas dans le forum Langage SQL
    Réponses: 7
    Dernier message: 27/05/2008, 20h16
  4. Besoin d'aide pour une requête SQL
    Par Borami dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2005, 10h33
  5. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56

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