我的问题很基本。 它是关于如何使用外键从两个表中选择某些信息来构建我的查询?
table vehicles
+-------+----------+------------+
| id_car| car_model| car_owner |
+-------+----------+------------+
| 1 | VW | 132|
+-------+----------+------------+
| 2 | VW | 200|
+-------+----------+------------+
table users
+-------+----------+------------+
|user_id| user_name| user_phone |
+-------+----------+------------+
| 132 | Peter| 555-555 |
+-------+----------+------------+
| 200 | Jim | 555-333 |
+-------+----------+------------+
car_owner
是 vehicles
表中的外键,它引用 users
表的主键 user_id
。
所以有人正在搜索所有大众汽车,我希望像 html 一样填充以下信息(是的,我知道这不是正确的方法 - 我使用它只是为了简化示例并显示来自每个表去):
> echo "Car model:". `vehicles.car_model`
> echo "Car owner:". `users.user_name`
> echo "Contacts: ". `users.user_phone`
提前致谢。
最佳答案
我不确定您是否了解外键的用途。外键基本上表示“对于此条目,父表中必须有一个条目”。你说 user_id 是 vehicle 表中的外键
,我不清楚。
那么,假设您有一个这样的表定义:
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)
);
当您要向表中插入新用户时,user_id 必须是 vehicles 表中 car_owner 列中的现有条目。
外键用于执行业务规则。每个用户都必须是车主吗?或者反过来,是否每辆车都必须由某人拥有?如果您对这两个问题的回答都是否定的,那么在这种情况下不要实现任何外键。但是,如果您可以肯定地回答"is",请这样做。
要获取您正在寻找的信息,只需执行
SELECT
*
FROM
vehicles
INNER JOIN users ON vehicles.car_owner = users.user_id
关于php - 从两个表查询时如何使用外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15969170/