我有两个表:
- tbl_users(ID、名字、姓氏、电子邮件、密码)
- 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/