Bonjour !
Je suis à la recherche d'aide pour commencer à faire des bases de données.
J'ai commencé à l'aide de WAMP. Pour débuter, j'ai commencé avec trois tables comme ceci
pokémon : 3 colonnes "num_pokedex_pk","non_pokemon_fr","nom_pokemon_jap"
Type: 2 colonnes "Type_pk","Type_pokémon"
Talent: 2 colonnes "talent_pk","talent_pokémon"
J'aimerais savoir comment mettre en relation les différents tables via une requête ( le but étant de l'intégrer dans un site ) et s'il existait des tutos pour sa. On m'a également parlé d'une table de jointure en remplaçant les pk par des fk mais je comprends pas trop comment faire
Merci de votre aide et bonne soirée !
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.
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
Ah d'accord
Merci de ta réponse
En prenant mon cas, je pourrais directement dans la table pokémon insérer une colonne "type_fk" et une colonne talent_fk" afin de faire directement la liaison dans cette table ?
Bonjour à tous !
J'ai suivit vos conseils et arrive maintenant à joindre deux tables l'une à l'autre
Seulement, je n'arrive toujours pas à trouver la requête adéquate pour une table de jonction en sachant que je dois avoir le type + le talent dans le même tableau. Je connais les requêtes pour avoir soit le type, soit le talent mais pas celle qui permettrait de les avoir tout les deux ...
J'ai essayé en faisant deux SELECT et en les liant via UNION ( en mettant id_type et id_talent dans la table pokemon ) mais sa fait une fois le colonne avec le type et sa refait la colonne avec le talent ...
SELECT pokemon.id_pokemon AS Numero_Pokedex, pokemon.pokemon_fr AS Nom_francais, pokemon.pokemon_jap AS Nom_japonais, type.type_pokemon AS Type
FROM pokemon
INNER JOIN type
ON pokemon.id_type = type.id_type
UNION
SELECT pokemon.id_pokemon AS Numero_Pokedex, pokemon.pokemon_fr AS Nom_francais, pokemon.pokemon_jap AS Nom_japonais, talent.talent_pokemon AS Talent
FROM pokemon
INNER JOIN talent
ON pokemon.id_talent = talent.id_talent
Quelqu'un aurait une idée ou un tuto sur les tables de jointure ?
Il n'y a quelque chose qui ne va pas dans tes tables, il n'y a pas de lien possible
Par exemple sur ces trois tables ça aurait été possible car il y a l'id du pokedex en commun
Pokémon(id_pokedex_pk, nom_pokemon_fr, nom_pokemon_jap)
Type(id_pokedex_pk, Type_pk, Type_pokémon)
Talent: (id_pokedex_pk, talent_pk, talent_pokémon)
Ici tu peux faire des jointures etc car il y a une valeur commune, c'est impératif il me semble, sinon quelqu'un me corrigera
Par exemple
Select type_pk from Type,Pokémon WHERE Pokémon.id_pokedex_pk=Type.id_pokedex_pk)
C'est bon j'ai trouvé
Voici le bon code
SELECT pokemon.id_pokemon AS Numero_Pokedex, pokemon.pokemon_fr AS Nom_francais, pokemon.pokemon_jap AS Nom_japonais, type.type_pokemon AS Type, talent.talent_pokemon AS Talent
FROM pokemon
INNER JOIN type
ON pokemon.id_type = type.id_type
INNER JOIN talent
ON pokemon.id_talent = talent.id_talent
J'ai donc le Numéro du Pokédex, le nom français, le nom japonais, le type et le talent du pokémon sur un seul et même tableau !
Je vois pas comment un pokémon peut avoir un type et un talent car tu n'as pas de champ pokémon ni dans type ni dans talent, alors je comprends pas comment ta requête peut marcher sauf si tu as modifié les tables
pokemon.id_type = type.id_type
Sur ta table un pokémon n'avait pas d'id type, j'imagine que tu l'as changée
Affirmatif
Dans ma table pokemon j'ai maintenant un id_type et un id_talent afin de faire la liaison