Savoir a quell etable appartient tel champ

Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020 - 21 avril 2007 à 12:48
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020 - 21 avril 2007 à 18:50
Bonjour les pros du SQL !

J'ai une question qui me taraude !
Voila, je travail sur une base de donnée Access 2003.
Cette base possède 6 tables, dont 3 tables " ELEVE", "PROFESSEUR" et "MAINTENANCE".

CES 3 tables possèdent un champ "NumeroCarte", numéro UNIQUE !
Je voudrais, en fonction d'un numéro de carte ( NumeroCarte), tester le statut de ce numéro, donc, savoir si c'est un éleve, un professeur, ou une maintenance.

Donc, je souhaiterais en réalité savoir si mon numéro de carte appartiens a la table ELEVE, PROFESSEUR, et MAINTENANCE.

J'avais donc déja pensé a mettre un champ "statut" dans chaque table, mais je trouve que cette solution fait "bidouille".
Je m'en remet donc à vous pour savoir ce que vous feriez à ma place !

Merci a tous !

4 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
21 avril 2007 à 17:48
Salut, dans l'état actuel de ton analyse tu peux faire une proc stockée simple qui retourne un nombre selon la table (0 =eleve, 1= professeur, 2=maintenance) :

create procedure whoIs( @code int )
begin

   if exists( select* from eleve e where e.code_carte = @code )
      return(0)
   if exists(  select* from proffesseur p where p.code_carte = @code)
      return(1)
   if exists( select* from maintenance m where m.code_carte = @code )
      return(2)
   
   -- pas trouvé
   return(100)

end

Mais il vaudrait mieux créer un index unique sur code_carte et un champ préfixe char(1), avec une contrainte default : in('E', 'P', 'M') :
lié en tant que contrainte unique avec code_carte pour les 3 tables.
0
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
21 avril 2007 à 18:18
:)

Merci de ton aide !
Tes 3 dernieres phrases mon fais bobo la tête !

Ton code que tu me présentes, c'est du pascal?
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
21 avril 2007 à 18:38
non, c'est du transact sql, le langage de sql-server, totalement compatible avec tous les sgbd.
0
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
21 avril 2007 à 18:50
AAA  d'acord !
Je ne connaissais pas ce langage.
Ca ma l'air compliqué, je crois que je vais tout fusionné en une table alors, je vais étudier cela :s
Je pense que j'ai mal concu ma base de donnée la !
Merci
0
Rejoignez-nous