Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser une clé étrangère lors d'une requête à partir de deux tables

Je ne sais pas si vous avez compris à quoi servent les clés étrangères. Une clé étrangère dit essentiellement "pour cette entrée, il doit y avoir une entrée dans la table parent". Vous avez dit user_id is foreign key in vehicle table , ce qui n'est pas clair pour moi.

Supposons donc que vous ayez une définition de table comme celle-ci :

CREATE TABLE vehicles
(`id_car` int, `car_model` varchar(2), `car_owner` int);


CREATE TABLE users
(`user_id` int, `user_name` varchar(5), `user_phone` varchar(7)
, CONSTRAINT `fk_your_foreign_key` FOREIGN KEY (user_id) REFERENCES vehicles(car_owner)
);

Lorsque vous souhaitez insérer un nouvel utilisateur dans la table, l'user_id doit être une entrée existante dans la colonne car_owner de la table des véhicules.

Les clés étrangères sont là pour implémenter des règles métier. Chaque utilisateur doit-il nécessairement être propriétaire d'une voiture ? Ou à l'inverse, chaque voiture doit-elle appartenir à quelqu'un ? Si vous pouvez répondre non aux deux questions, n'implémentez aucune clé étrangère dans ce cas. Mais faites-le, si vous pouvez répondre oui à coup sûr.

Pour obtenir les informations que vous recherchez, faites simplement

SELECT 
* 
FROM 
vehicles 
INNER JOIN users ON vehicles.car_owner = users.user_id