我有 3 个 MySQL 表:汽车、用户和访客。
table 车可以与餐 table 用户或餐 table 访客相关。表用户和访问者具有不同的表结构。我想加入所有这些表并检索人员数据。目前我正在使用 PHP 来检索个人数据。
这是创建此类关系的最佳表结构吗?有没有一种方法可以使用单个 MySQL 查询来检索个人信息?
[cars] id | car_name | person_type | person_id --------------+-------------+-------- 1 | car 1 | user | 1 2 | car 2 | visitor | 1 [users] id | name ---+---------- 1 | person 1 [visitors] id | first_name | last_name ---+------------+---------- 1 | person | 2
最佳答案
你可以像这样使用外连接:
select
a.ID,
a.car_name,
a.person_type,
b.name as username,
c.name as visotorName
from
cars a
left outer join users b
on a.person_id=b.ID
left outer join visitors c
on a.person_id=c.ID
我写了一个相当detailed answer在一个非常相似的问题上,您可能也想快速阅读一下。它显示了一些其他函数,您可以使用这些函数根据返回的行数以及每行返回的内容以您想要的方式很好地格式化数据。
关于php - MySQL动态表名关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12052676/