mysql - 创建一个视图,将多个表和另一个单独的表连接到一个表中
问题描述
我在下面有这些表格
table_1 [ id(主键,AI),名字,姓氏]
table_2 [id(主键,AI),table_1_id,payment_type,地址]
table_3 [ id(主键,AI),table_1_id,table_4_id ]
table_4 [ id(主键, AI), card_number, plan_name ]
我想要达到的目标
- 连接表 1 和表 2,其中表 2 table_1_id = 表 1 id
- 连接表 3 和表 4,其中表 3 table_4_id = 表 4 id
- 加入表 3 和表 4,保留表 3 列 table_1_id
- 将连接表 3 和表 4 的新表结果连接到每个 table_1_id 连接表 1 和 2 的新表结果
下面是我尝试过的
SELECT
`t1`.`id` AS `t1_id`,
`t1`.`firstname` AS `bill_firstname`,
`t1`.`lastname` AS `bill_lastname`,
`t2`.`payment_type` AS `payment_type`,
`t2`.`address` AS `bill_address`,
FROM
(`table1` `t1`
JOIN `table2` `t2` ON ( (`t1`.`id` = `t2`.`table_1_id`) )
)
不幸的是,我无法加入其他人,非常感谢任何帮助。
解决方案
这将结合所有表格并显示所有详细信息。如果您只有 1:1 关系,则每个 t1.id 获得 1 行 如果您有一个或多个表 1:n 关系,则每个 id 将获得 n 多行。
因此,您也将拥有与 t1.id 以 1:1 关系的列对数据进行分组,其余的您必须使用聚合函数。
例如,如果您每个 t1.id 有 2 个信用卡号,您必须决定要显示的内容 GROUP_CONCAT 会将卡号与逗号连接起来
SELECT
`t1`.`id` AS `t1_id`,
`t1`.`firstname` AS `bill_firstname`,
`t1`.`lastname` AS `bill_lastname`,
`t2`.`payment_type` AS `payment_type`,
`t2`.`address` AS `bill_address`,
`t4`.`card_number` AS `card_number`,
`t4`.`plan_name` AS `plan_name`
FROM
(`table1` `t1`
INNER JOIN `table2` `t2` ON ( (`t1`.`id` = `t2`.`table_1_id`) )
INNER JOIN `table3` `t3` ON ( (`t1`.`id` = `t3`.`table_1_id`) )
INNER JOIN `table4` `t4` ON ( (`t3`.`table_4_id ` = `t4`.`id`) )
)
推荐阅读
- asp.net - 多个请求会影响单个 IIS 实例中的用户吗?
- docker - 特使代理没有转发到列出的地址?
- ios - 在第二个 ViewController 中带有 textDocumetProxy 的 iOS IBAction (Objective-C)
- python - BS4 python脚本运行时立即崩溃,但看代码应该没问题
- django - 当 many=True 时验证数据列表
- curl - 使用 Python 请求连接到 AKS 上的 AMLS Web 服务时遇到问题
- javascript - 有条件地对范围进行排序
- php - Codeigniter - 如何启动文件下载并重置表单以再次使用
- gitversion - GitVersion 是否支持 Mainline 模式但具有开发分支?
- flutter - 使用 Flutter 进行 IBM Visual Recognition 分类时出错