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 :

Choix structure tables


Sujet :

Langage SQL

  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 24
    Par défaut Choix structure tables
    Bonjour à tous, je souhaiterais votre avis sur une structure de bdd (juste un bout je vous rassure^^).

    Alors voilà je développe une application actuellement où des Magasins se logguent et ont accès à un tableau (GridView avec le requete SELECT en source);
    Chaque Magasin n'a d'affiché que les données de son magasin.

    Seulement il y a 3 groupes d'entité qui peuvent se loguer: un magasin, un admin et 3 personnes distinctes.

    Voici un récapitulatif des droits:

    -Magasin : accès donnée de son magasin
    -Admin: accès donnée de tous les magasins
    -Spécial (3 identifiants différents): accès aux données de leurs magasins respectifs (secteur).


    Voici mes tables:

    *************
    MAGASIN
    ---------
    -code_magasin
    -magasin
    -mdp

    SECTEURS
    ----------
    -personne1
    -personne2
    -personne3

    *************

    Mon problème est que je ne sais pas trop comment bien gérer le groupe spécial qui a accès spécifiquement à son secteur.

    Dans "SECTEURS" il y a les code_magasin de chaque personne;


    Comment faire et avec quelle requête je pourrais faire un SELECT qui afficherait les données des magasins correspondant à personne1/personne2/personne3 ?

    Merci d'avance, et en espérant m'être pas trop mal expliqué!

    Cordialement

  2. #2
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 24
    Par défaut
    Ne peut-on pas faire quelque chose comme ça?

    SELECT champs1, champs2, champs3 FROM table1 WHERE champs1 = (SELECT colonne1 FROM table2); ??

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 135
    Par défaut
    Je ne saisi pas ta question:
    est ce que ton modèle est finalisé et tu as un problème dans tes requêtes ou bien tu cherche à avoir une conception de modèle :

    Si c'est le 2eme cas je peux te propser un
    début de conception:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    MAGASIN
    ---------
    idMag  magasin  mdp
    1
    2
    3
    4
    5
     
    Utilisateur
    IDUser   libelle
    1       ADMIN
    2       pers1
    3       pers2
    4       pers3
     
    User_Secteur
    IdUSer IDsect
    2	1
    3	2
     
    Secteurs
    IdSect  libelle
     
     
    Secteur_Magazin
    IDSECT   IDMag
    1	1
    1	2
    1	3
    2	4
    2	5

  4. #4
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 24
    Par défaut
    J'ai modifié ma table SECTEURS comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SECTEURS
    ----------
    chef_secteur | code_magasin
          1                     100
          1                      97
          2                      88
    Pour le reste je ne peux pas modifier, car il ya trop de dépendances et de choses existantes qui reposent dessus...


    Avec donc une archi comme ça:

    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
     
    *************
    MAGASIN
    ---------
    -code_magasin
    -magasin
    -mdp
     
    SECTEURS
    ----------
    -chef_secteur
    -code_magasin
     
    FICHE_DONNEES_MAG
    ----------
    -numero
    -...
    -...
    -code_magasin
    Et je voudrais afficher les données de "FICHE_DONNEES_MAG" correspodant à un chef de secteur (donc à ses magasins).

    J'ai tenté ça, mais ça n'a pas marché:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT TOP 
    200 NUMERO, CODE_MAGASIN, NOM, [...]
    FROM FICHE_DONNEES_MAG
    WHERE CODE_MAGASIN = 
       (SELECT CODE_MAGASIN FROM SECTEURS WHERE SECTEURS = 'Personne1') 
    ORDER BY NUMERO DESC";

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 135
    Par défaut
    tu peux tenter ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT TOP 
    200 FICHE_DONNEES_MAG.*
    FROM FICHE_DONNEES_MAG INNER JOIN MAGAZIN 
    ON  FICHE_DONNEES_MAG.numero=MAGAZIN.CODE_MAGASIN 
    INNER JOIN SECTEURS 
    ON  MAGAZIN.CODE_MAGASIN =SECTEURS.CODE_MAGASIN
    Where chef_secteur=1
    ORDER BY FICHE_DONNEES_MAG.NUMERO DESC;

  6. #6
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 24
    Par défaut
    J'ai beau chercher, sur cette requete, je ne trouve pas ce qui ne marche pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT TOP 200 NUMERO, CODE_MAGASIN, [...] FROM FICHE_DONNEES_MAG WHERE CODE_MAGASIN IN (SELECT CODE_MAGASIN FROM SECTEURS WHERE CHEF_SECTEUR = 'Personne1') ORDER BY NUMERO DESC";
    Mais l'erreur affichée est "Incohérence de type dans une expression."

    Une idée de comment faire?

    Merci d'avance

  7. #7
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 24
    Par défaut
    Teach, mon héro... j'étais convaincu que la jointure ne marcherait pas... belle gourde!

    voilà la requête finale (je n'ai pas besoin d'utilisaer la table magasin, le code_magasin étant déjà dans la table Fiche_donnees_mag.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT TOP 200 fi.NUMERO, fi.CODE_MAGASIN, fi.[...] 
    FROM FICHE_DONNEES_MAG AS fi
    INNER JOIN SECTEURS 
    ON fi.CODE_MAGASIN = SECTEURS.CODE_MAGASIN 
    WHERE SECTEURS.CHEF_SECTEUR = 'Personne1'
    ORDER BY fi.NUMERO DESC";
    Merci beaucoup!

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/06/2007, 13h01
  2. [conception] structure table ou requete
    Par lyndalittle dans le forum Modélisation
    Réponses: 3
    Dernier message: 26/02/2007, 17h09
  3. choix de table pour gestion des stocks
    Par Piloupilou999 dans le forum Access
    Réponses: 1
    Dernier message: 28/01/2007, 21h49
  4. Conseil choix structure STL
    Par SteelBox dans le forum SL & STL
    Réponses: 3
    Dernier message: 15/03/2005, 03h13
  5. [vb6] Modifier structure table Access sous VB6
    Par jlvalentin dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 25/03/2004, 18h45

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