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

MS SQL Server Discussion :

[SQL 2000] Exclusion de ligne compliquée


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut [SQL 2000] Exclusion de ligne compliquée
    Salut

    Je suis face à un problème de conception.

    J'ai une table qui rassemble des découpages géographiques (pays, rgion, département....) de cette manière : un id_decoup, un nom_decoup, un type_decoup et un id_decoup_parent.

    Ensuite j'ai une table de zone : id_zone, nom_zone.
    Ensuite j'ai une table de contenu de zone qui fait le lien entre les deux premières : id_zone, id_decoup, effet.

    Mon souci vient maintenant : je voudrais trouver tous les id_decoup qui sont défini dans la table de contenu sauf ceux pour qui la collone "effet" est à 1 (la valeur par défaut étant 0).

    J'en suis à cette requête là, mais ça marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    SELECT * from 
    (select distinct DC.id_zone, DC.nom_zone from zone_contenu C
    inner join zone_test DP on dp.id_zone = C.id_Decoupage
    inner join zone_test DR on dr.id_zone = C.id_Decoupage or DR.zone_Parent = DP.id_zone 
    inner join zone_test DD on dd.id_zone = C.id_Decoupage or DD.zone_Parent = DR.id_zone 
    inner join zone_test DA on da.id_zone = C.id_Decoupage or DA.zone_Parent = DD.id_zone
    inner join zone_test DC on dc.id_zone = C.id_Decoupage or DC.zone_Parent = DA.id_zone
    where c.id_zone = 4
    and DC.type_zone = 5
    and C.Effet = 0) as T1
     
    left join 
    (select distinct DC.id_zone, DC.nom_zone from zone_contenu C
    inner join zone_test DP on dp.id_zone = C.id_Decoupage
    inner join zone_test DR on dr.id_zone = C.id_Decoupage or DR.zone_Parent = DP.id_zone 
    inner join zone_test DD on dd.id_zone = C.id_Decoupage or DD.zone_Parent = DR.id_zone 
    inner join zone_test DA on da.id_zone = C.id_Decoupage or DA.zone_Parent = DD.id_zone
    inner join zone_test DC on dc.id_zone = C.id_Decoupage or DC.zone_Parent = DA.id_zone
    where c.id_zone = 4
    and DC.type_zone = 5
    and C.Effet = 1) as T2
    on T2.id_zone = T1.id_zone AND T2.id_zone is null
    J'obtiens 57 lignes, alors qu'il ne m'en faut que 56. Dans ma table de zone contenu j'ai mis 1 pour le id de St Nazaire

    Pouvez vous m'aider ?

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Ensuite j'ai une table de contenu de zone qui fait le lien entre les deux premières : id_zone, id_decoup, effet.

    Mon souci vient maintenant : je voudrais trouver tous les id_decoup qui sont défini dans la table de contenu sauf ceux pour qui la collone "effet" est à 1 (la valeur par défaut étant 0).
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_decoup FROM zone_contenu WHERE effet = 1
    ??
    As-tu besoin d'une logique supplémentaire ?

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    oops, désolé, j'ai oublié de mettre "Résolu".
    en fait j'ai choisi de passer par une gestion d'arbre intervallaire sur les excellents conseil de SQL-Pro et j'ai suivi son tuot.

    ça marche d'enfer avec d'assez bonnes performances.

    En tout cas, merci pour ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/03/2012, 10h53
  2. [SQL 2000] Faire une jointure d'exclusion
    Par zooffy dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/09/2007, 16h06
  3. [SQL serv 2000] intervertir deux lignes
    Par igorzup dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/08/2006, 09h10
  4. [SQL Server 2000] exclusion dernière date dans un between?
    Par biloumousse dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/04/2006, 17h11
  5. SQL 2000 - Liste + taille des tables et index
    Par Fox dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/03/2004, 15h59

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