php - MySQL动态表名关系

标签 php mysql relationship relation

我有 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/

相关文章:

java - Java 中是否有类似于 PHP 的三元运算符的简短版本?

php - 特定 if 语句的含义

php - 在 yii2 查询构建器中如何使用带有 where 子句的运算符

mysql - SQL Join 2 tables with "ON"on max value in second table

powerbi - Power BI应该在星型模式模型中有粗支还是细支

core-data - Swift 4 核心数据 - 获取关系

php - Laravel 查找开放时间内的 2 个日期之间的时间量

php - 查询将字符串数据转换为 int 数据以获得最大值

mysql - 使用MySQL变量通过评分创建分组

mysql - 如何在像 MySQL 这样的 RDBMS 中存储双向关系?