SQL Join 类似列上的原始查询问题

Posted

技术标签:

【中文标题】SQL Join 类似列上的原始查询问题【英文标题】:SQL Join raw query issue on similar coloumn 【发布时间】:2016-09-18 16:05:34 【问题描述】:

这是我的报告表

report
id user_id field_tech_id
1  1       4
2  3       6

而用户表是

user
id name    user_type
1  raj     1
3  ram     1
4  anthony 2
6  kumar   2

在此列中 user_type 1 用于用户,2 用于 field_tech

如何加入并获取订单的用户名和字段技术名称

我试过了

$data = Report::select('user.name as user_name')
                    ->leftjoin('users','users.id','=','report.user_id')
                    ->get();

但是当我尝试时

$data = Report::select('user.name as user_name')
                    ->leftjoin('users','users.id','=','report.user_id')
                    ->leftjoin('users','users.id','=','report.field_tech_id')
                    ->get();

如何获取用户名和字段技术名称?

【问题讨论】:

哪个表有字段技术名称列 【参考方案1】:

试试这个:

$data = Report::select('user.name as user_name')
                ->leftjoin('users as users1','users.id','=','report.user_id')
                ->leftjoin('users as users2','users.id','=','report.field_tech_id')
                ->select('users1.*,users2.*)                    
                ->get();

【讨论】:

【参考方案2】:

如果您可以传递整个 SQL 查询,那么这应该可以:

SELECT u.name as user_name, r.field_tech_id
FROM user u
LEFT JOIN report r
ON u.id = r.user_id

【讨论】:

以上是关于SQL Join 类似列上的原始查询问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 XPath/XQuery 过滤 XML 列上的 SQL 查询

SQL查询优化JOIN多列

表格存储 SQL 查询多元索引

Sql 查询仅对一列上的数据进行排序,但不更改其他列

用户定义函数上的 Sql Join:如何优化

SQL Server:查询应用在 where 子句中,包含 Json 对象的列上的 IS NOT Null 需要更多时间