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 :

Exclure des données d'une requête1 suivant une requête2


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    chargée de mission SIG
    Inscrit en
    Juillet 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chargée de mission SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 30
    Par défaut Exclure des données d'une requête1 suivant une requête2
    Bonjour,

    Alors là, j'ai une requête hyper complexe à mettre en place (enfin selon mon point de vue qui est loin d'être celui d'une experte). J'ai d'ailleurs eu du mal à trouver un intitulé pour cette discussion assez explicite !
    Alors c'est parti, je me lance, j'explique le contexte :

    J'ai une table "communes" (id_commune, nom_commune, zone_surveillance) et j'ai une table "communes_exclues" (id_exclusion, communes_id_commune, date_exclusion). Dans cette deuxième table, j'ai la liste des communes exclues de nos activités avec une date d'exclusion.
    Alors voilà, je voudrais faire une requête où je souhaite la liste des communes de la zone de surveillance n°10 et qui n'apparait pas dans la liste d'exclusion selon une période d'activité (donc la date d'exclusion est à prendre en compte). Pour cette période, j'aurais donc $date_debut et $date_fin.

    Voici ce que j'ai commencé à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT c . * FROM atl_commune c
    WHERE atl_zone_surveillance_id_zs = 10
    AND c.id_commune NOT IN (SELECT atl_commune_id_commune
                        FROM atl_exclusion_commune
                        WHERE year_exclusion_commune BETWEEN ('$date_debut') AND('$date_fin'))
    Mais cela ne me convient pas puisque si je demande un rapport du 1er janvier au 31 décembre et qu'une commune a été exclue le1er mai de la même année, la commune doit quand même apparaitre dans la liste puisqu'elle aura eu de l'activité du 1er janvier au 30 avril.

    une idée ??

    A++

    Clanou01

  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
    22 009
    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 : 22 009
    Billets dans le blog
    6
    Par défaut
    Pour les exclusions avec des intervalles temporels il faut utiliser une fonction comme OVERLAPS.

    A me lire :
    http://sqlpro.developpez.com/cours/gestiontemps/#L1.2.2

    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 averti
    Femme Profil pro
    chargée de mission SIG
    Inscrit en
    Juillet 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chargée de mission SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 30
    Par défaut
    hello,

    Merci pour l'info. Je ne connais pas du tout overlaps, je vais donc fouiner un peu.

    Merci

    Clanou01

  4. #4
    Membre averti
    Femme Profil pro
    chargée de mission SIG
    Inscrit en
    Juillet 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chargée de mission SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 30
    Par défaut
    Bon ben, jsuis vraiment désolée. J'y ai passé une bonne partie de la journée mais je n'y arrive pas. Et en plus j'ai dû mal à saisir le sens d'OVERLAPS, ce qui implique forcément que je ne l'utilise à bon escient.
    J'avais noté dans un coin de chercher du côté du select extract mais je ne sais pas si ça marche en langage sql.

    Bref, n'hésitez pas à me donner vos suggestions, aides et conseils.

    Clanou01

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 660
    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 660
    Billets dans le blog
    10
    Par défaut
    Bonsoir,

    Overlaps n'est pas applicable avec tous les SGBD, mais vous pouvez tester facilement un chevauchement de deux périodes, en procédant ainsi :
    soit une période P1 bornée par D1 et F1 (début et fin), et une période P2 bornée par D2 et F2, P1 et P2 sont chevauchantes si D2<F1 et F2>D1

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/03/2016, 15h14
  2. Charger une JComboBox ou une JList des données d'un champ d'une table dans une BDD.
    Par MasterMbg dans le forum Codes sources à télécharger
    Réponses: 2
    Dernier message: 27/09/2013, 13h16
  3. Réponses: 6
    Dernier message: 22/07/2013, 17h24
  4. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 18h37
  5. Réponses: 1
    Dernier message: 13/12/2010, 15h31

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