MySQL一个表A中多个字段关联了表B的ID,如何关联查询?

表A:demo_user,用户表,记录用户信息

表B:demo_info,信息表,表中有提交人和确认人两个字段(其他字段暂不提及),都关联了用户表的用户ID

问题场景:想要在加载信息列表的时候,直接一次性关联查询到提交人和确认人的姓名。

SQL:

 
  1. SELECT

  2. demo_info.id,

  3. user1.user_name AS commit_user_name,

  4. user2.user_name AS ensure_user_name

  5. FROM

  6. demo_info

  7. LEFT JOIN demo_user user1 ON demo_info.commituser_id = user1.user_id

  8. LEFT JOIN demo_user user2 ON demo_info.ensureuser_id = user2.user_id

查询结果

总结:解决方法就是多次外连接查询同一张表,给表起不同的别名。

 

Position::select('*')->selectRaw('departmentst.department_name as a,departmentsto.department_name as b')
    ->join('departments as departmentst', 'departmentst.department_id', '=', 'Position.department')
    ->join('departments as departmentsto', 'departmentsto.department_id', '=', 'Position.department')
    ->get()
    ->toArray();

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的 MySQL 多个数据字段关联抽样对比正确性的 shell 脚本示例: ```bash #!/bin/bash # 数据库信息 database="test_db" host="localhost" user="root" password="password" # 抽样数据量 sample_size=1000 # 1字段值抽样 table1_field="id" table1_sample=$(mysql -h $host -u $user -p$password -D $database -se "SELECT $table1_field FROM table1 ORDER BY RAND() LIMIT $sample_size") # 2字段值抽样 table2_field="table1_id" table2_sample=$(mysql -h $host -u $user -p$password -D $database -se "SELECT $table2_field FROM table2 WHERE $table2_field IN ($table1_sample) ORDER BY RAND() LIMIT $sample_size") # 3字段值抽样 table3_field="table2_id" table3_sample=$(mysql -h $host -u $user -p$password -D $database -se "SELECT $table3_field FROM table3 WHERE $table3_field IN ($table2_sample) ORDER BY RAND() LIMIT $sample_size") # 对比抽样数据 if [ "$table1_sample" == "$table2_sample" ] && [ "$table2_sample" == "$table3_sample" ]; then echo "数据关联正确" exit 0 else echo "数据关联错误" exit 1 fi ``` 这个脚本会先从1抽取指定字段的数据,然后根据这些数据在2抽取指定字段的数据,最后根据这些数据在3抽取指定字段的数据。抽样数据量可以根据需要修改。然后,对比这些抽样数据是否一致。如果抽样数据一致,则输出“数据关联正确”并退出脚本,返回值为 0;否则输出“数据关联错误”并退出脚本,返回值为 1。您需要修改脚本的数据库信息、名和字段名,以适应您的实际情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值