CREATE TABLE IF NOT EXISTS UTILISATEURTYPE (
UTILISATEURTYPE_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UTILISATEURTYPE_TYPE VARCHAR(15) NOT NULL
);
CREATE TABLE IF NOT EXISTS UTILISATEUR (
UTILISATEUR_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UTILISATEUR_NOM VARCHAR(50) NOT NULL,
UTILISATEUR_MOT_DE_PASSE VARCHAR(40) NOT NULL,
UTILISATEUR_UTILISATEURTYPE INT NOT NULL,
FOREIGN KEY (UTILISATEUR_UTILISATEURTYPE) REFERENCES UTILISATEURTYPE(UTILISATEURTYPE_ID)
);
Euh, j'avais ça qui trainait en stock.
- Une table UtilisateurType qui a une clé primaire UTILISATEURTYPE_ID
- Une table Utilisateur qui a une clé primaire UTILISATEUR_ID et qui prend en clé secondaire UTILISATEUR_UTILISATEURTYPE la clé primaire de UtilisateurType.
Pour déclarer cette relation, on utilise FOREIGN KEY voilà.
Du coup, UTILISATEUR.UTILISATEUR_UTILISATEURTYPE pointe vers UTILISATEURTYPE.UTILISATEURTYPE_ID
Et si t'as trois types d'utilisateurs de définis (1 Administrateur, 2 Modérateur, 3 Forumeur par exemple)
Pour chaque utilisateur, tu pourras remplir dans le champs UTILISATEUR_UTILISATEURTYPE la valeur 1 (admin), 2 (modo) ou 3 (forumeur)
Ensuite tu peux écrire une relation du type
select
UTILISATEUR.UTILISATEUR_NOM
, UTILISATEUR.UTILISATEUR_MOT_DE_PASSE
from
UTILISATEUR inner join UTILISATEURTYPE
on UTILISATEUR.UTILISATEUR_UTILISATEURTYPE = UTILISATEURTYPE.UTILISATEURTYPE_ID
where
UTILISATEURTYPE.UTILISATEURTYPE_TYPE = 'Modérateur'
and
UTILISATEUR.UTILISATEUR_NOM like 'A%';
Je suis pas sûr que ma requête soit parfaitement juste, ça fait longtemps que j'ai pas fait ça. Et désolé pour les noms de variables à rallonge
En gros elle va te retourner le nom et le mot de passe des utilisateurs qui ont un statut Modérateur et qui ont un pseudo qui commence par A. J'espère que ça t'aide un peu
Message édité le 21 juin 2016 à 19:33:14 par Ludovic