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 :

Requête avec inclusion de valeur non numérique


Sujet :

Langage SQL

  1. #1
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut Requête avec inclusion de valeur non numérique
    Salut a tous.

    J'ai des entrées dans un table qui contienne un champ position.

    Les valeurs pou ce champ sont organisées comme des ensembles inclus les un dans les autres.

    Par exemple
    World
    ----Europe
    ------France
    ------Italie
    ----Asie
    ------Chine
    ------Inde
    ----Amérique du nord

    Supposons jai une entrée E1 dans ma table avec la position 'Europe', et une entrée E2 avec pour position 'France'

    Alors une recherche avec la valeur 'France' doit me donner E2 (c'est la plus précise) tandis qu'avec 'Italie' ou 'Europe' je dois avoir E1.

    La solution que j'imagine pour le moment, c'est de faire une requête
    avec le niveau de précision maximal et si je ne trouve rien, passer au niveau d'au dessus.

    Ya t'il un moyen de faire ca en une seule requête ?

    Merci d'avance.

    David.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,


    Présentez les tables actuelles (nom de la table + nom de colonne pertinente), car là....

  3. #3
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    C'est pas clair ?

    Sinon ceci illustre bien ce que je veux résoudre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    produit | position  
        P1   | France
        P2   | Europe
        P3   | Monde
    Sachant que j'ai les inclusions suivantes de valeurs
    {France,Italie} € {Europe} € {Monde}
    {Chine} € {Asie} € {Monde}

    Si je fais une recherche des produits dispo en France, je veux P1 (et juste P1, car c'est la position la plus précise qui compte qui domine). La même recherche avec Italie ou Europe, doit me sortir P2. Enfin, une recherche avec Asie ou Chine doit me donner P3.

    C'est plus clair ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 243
    Points : 12 874
    Points
    12 874
    Par défaut
    Bonjour,
    Je ne comprends pas pourquoi une recherche sur France ne renvoie que ce qui est dispo en France, alors qu'une recherche sur Italie renvoie ce qui est dispo en Europe... La France n'est plus en Europe ?
    Si je comprends bien, si aucun produit n'est dispo en France, une recherche sur la France renvoie tout ce qui est dispo en Europe, mais dès qu'un produit est "spécifique" à la France, la recherche précédente ne renvoie que ce produit ?
    Soit c'est pas clair, soit c'est bizarre...

    Cela étant dit, difficile de proposer quoi que ce soit sans voir la description des tables impliquées.

    Tatayo.

  5. #5
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Si je comprends bien, si aucun produit n'est dispo en France, une recherche sur la France renvoie tout ce qui est dispo en Europe, mais dès qu'un produit est "spécifique" à la France, la recherche précédente ne renvoie que ce produit ?
    C'est ca.

    Et c'est pas bizarre. Si une ligne est présente, c'est que le produit a été modifié pour respecter la réglementation locale. Donc par défaut, si rien n'est pas précisé, on doit chercher dans le niveau au dessus jusqu'à arriver au niveau "Monde".

    Cela étant dit, difficile de proposer quoi que ce soit sans voir la description des tables impliquées.
    Jai aucune table... C'est un futur problème sur lequel je me renseigne.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    Et c'est pas bizarre. Si une ligne est présente, c'est que le produit a été modifié pour respecter la réglementation locale. Donc par défaut, si rien n'est pas précisé, on doit chercher dans le niveau au dessus jusqu'à arriver au niveau "Monde".
    En découpant correctement vos zones (soit avec un arbre soit avec des entités qui représente une zone) vous devriez pouvoir sortir ce genre d'information.

  7. #7
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Citation Envoyé par punkoff Voir le message
    En découpant correctement vos zones (soit avec un arbre soit avec des entités qui représente une zone) vous devriez pouvoir sortir ce genre d'information.
    Euh, oui mais encore ?
    Ca serrait en C++ pas de soucis, mais comment je fais ca en SQL vace ma base de donnée ?

    Any liens/ mot clés à taper/snippet de code ?

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Tout commence ici : http://www.developpez.net/forums/f62...sation/schema/

    Parler de requête sql sans avoir modéliser n'a pas de sens.

    Mais pour pouvoir modéliser il faut déjà pouvoir exprimer clairement la partie fonctionnelle visée.

    pour la modélisation (comprendre jusqu'à la 3nf) : http://fsmrel.developpez.com/basesre...?page=sommaire
    pour le sql : http://sqlpro.developpez.com/
    les arbres : http://sqlpro.developpez.com/cours/arborescence/

  9. #9
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Le dernier lien correspond a ce que je cherche, merci !

  10. #10
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    c'est pas forcément le plus pertinent ...

  11. #11
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Pourquoi ? Et quelles sont les alternatives dans ce cas ?

  12. #12
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Comme précisé par les autres intervenants, il faut commencer par la modélisation.

    Dès votre premier message, vous avez mélangé trois entités :
    Le monde, des continents (ou sous-continents), les pays.

    À moins que vous ne comptiez étendre votre programme sur la lune, sur mars ou chez les extra-terrestre, je vous propose de laisser le monde de côté pour l'instant. Je fusionne aussi la distinction entre continents et sous-continents pour l'exemple, mais si vous en avez besoin n'hésitez pas à détailler la logique sera la même.

    Il vous faut d'abord une entité continent.
    En conception par rapport à ce que vous avez évoquez elle ne contient qu'un seul attribut, son nom.

    Il vous faut ensuite une entité pays.
    Toujours rapport à vos propos, le pays a un nom et un continent obligatoirement renseigné.

    Passons à la couche physique, il vous faut deux tables avec pour clefs primaires par exemple des identifiants auto-incrémentés :
    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
    CREATE TABLE geo_continent
    ( id_continent    integer identity(1,1) not null
    , lb_continent    varchar(50) not null
    , constraint pk_geo_continent
        primary key (id_continent)
    );
     
    CREATE TABLE geo_pays
    ( id_pays         integer identity(1,1) not null
    , id_continent    integer not null
    , lb_pays         varchar(50) not null
    , constraint pk_geo_pays
        primary key (id_pays)
    , constraint fk_pays_continent
        foreign key (id_continent)
        references geo_continent (id_continent)
    );
     
    CREATE INDEX fk_pays_continent
    ON geo_pays (id_continent);
    Insérons vos données :
    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
    INSERT INTO geo_continent (lb_continent) values ('Europe');
    INSERT INTO geo_continent (lb_continent) values ('Asie');
    INSERT INTO geo_continent (lb_continent) values ('Amérique du nord');
     
    INSERT INTO dbo.geo_pays (id_continent, lb_pays)
    select id_continent, 'France'
      from geo_continent
     where lb_continent = 'Europe';
     
    INSERT INTO dbo.geo_pays (id_continent, lb_pays)
    select id_continent, 'Italie'
      from geo_continent
     where lb_continent = 'Europe';
     
    INSERT INTO dbo.geo_pays (id_continent, lb_pays)
    select id_continent, 'Chine'
      from geo_continent
     where lb_continent = 'Asie';
     
    INSERT INTO dbo.geo_pays (id_continent, lb_pays)
    select id_continent, 'Inde'
      from geo_continent
     where lb_continent = 'Asie';
    Voilà déjà de quoi avancer.

  13. #13
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 151
    Points : 1 414
    Points
    1 414
    Par défaut
    Juste pour mettre un peu d'huile sur le feu

    ce type de hiérarchisation pour la géographie va vite se heurter à un petit problème :

    la France n'est pas qu'en Europe

    quid des départements d'outre-mer ! Et cela n'est pas propre à la France...

    C'est donc à prendre en compte dans la modélisation

  14. #14
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    merci a tous, jai eu mes réponses.

    Citation Envoyé par dehorter olivier Voir le message
    Juste pour mettre un peu d'huile sur le feu

    ce type de hiérarchisation pour la géographie va vite se heurter à un petit problème :

    la France n'est pas qu'en Europe

    quid des départements d'outre-mer ! Et cela n'est pas propre à la France...

    C'est donc à prendre en compte dans la modélisation
    Ca c'est pas un soucis.

    Par exemple La réunion est une entrée a part qui se situe dans la zone "océan indien". Je fais même la distinction avec la Corse/métropole, c'est pour dire.

  15. #15
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    merci a tous, jai eu mes réponses.



    Ca c'est pas un soucis.

    Par exemple La réunion est une entrée a part qui se situe dans la zone "océan indien". Je fais même la distinction avec la Corse/métropole, c'est pour dire.
    ce qui est claire, c'est qu'en ne distillant qu'une partie du fonctionnelle à chaque intervention, vous n'allez avoir que des avis très pertinent sur vos pseudos questions :/

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

Discussions similaires

  1. [A-03] Requête avec toutes les valeurs d'un champ
    Par badeux dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/10/2008, 11h22
  2. Réponses: 10
    Dernier message: 12/06/2008, 15h06
  3. [WPF] Storyboard et valeurs non numérique
    Par JuTs dans le forum Framework .NET
    Réponses: 3
    Dernier message: 19/11/2007, 20h07
  4. requête avec résultat vide ou non vide
    Par speedev dans le forum Langage SQL
    Réponses: 14
    Dernier message: 11/07/2007, 13h10
  5. Problème avec Me.RecordSource : valeur non conforme
    Par Tchupacabra dans le forum Access
    Réponses: 6
    Dernier message: 02/12/2005, 17h01

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