php - 连接两列并使用单个 sql 查询从其外键获取字段值

标签 php mysql

我有两个表:

  1. tbl_users(ID、名字、姓氏、电子邮件、密码)
  2. tbl_claims (id,claimed_by,claimed_to)(claimed_by和claimed_to都是tbl_users表的user_id,即外键)

现在我怎样才能通过单个sql查询获取claimed_by和claimed_to用户id的first_name和last_name?

我正在尝试下面的查询,但在 where 子句中使用它时出现未知列错误。

SELECT c.*,
(select first_name from tbl_users where id=c.claimed_by) as claimed_by_fname,
(select last_name from tbl_users where id=c.claimed_by) as claimed_by_lname,
(select first_name from tbl_users where id=c.claimed_to) as claimed_to_fname,
(select last_name from tbl_users where id=c.claimed_to) as claimed_to_lname 
from tbl_claims as c INNER JOIN tbl_users as u ON u.id = c.claimed_by INNER JOIN
tbl_users as u1 ON u1.id = c.claimed_to where claimed_by_fname like '%kotak%'

我知道上面的sql查询根本没有效率,我刚刚尝试过。它为我提供了没有 where 子句的记录,但不适用于 where 子句。

最佳答案

您不需要子选择只需加入

select c.*
      , u1.first_name claimed_by_fname 
      , u1.last_name claimed_by_lname
      , u2.first_name claimed_to_fname 
      , u2.last_nameclaimed_to_lname
from tbl_claims as c 
INNER JOIN tbl_users as u1 ON u1.id = c.claimed_by 
INNER JOIN tbl_users as u2 ON u2.id = c.claimed_to 
where u1.claimed_by_fname like '%kotak%'

关于php - 连接两列并使用单个 sql 查询从其外键获取字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48987019/

相关文章:

php - Lumen API 通过聚合选择数据

php - Centos 7、PHP 7.2 通过 Apache2.4 拒绝权限

mysql - 为什么我的 sql 池连接突然关闭

MySQL 查询 : Join tables and display records as comma separated string in a single row

php - ajax-PHP-MySQL 是聊天室应用程序的良好组合吗?

javascript - 如何在单选按钮单击时获取 json 存储的数据

php - MySQL 中两个日期列之间的差异

php - 如果花费的时间太长,则中止选择查询

php - 我的代码中的 MYSQL 错误

php - 表不存在