如何在SQL中将另一个条件与多个内部联接结合在一起?

Tech_sharma:

我有三个主表和一个主表,它们需要所有主表中的数据

    positionmaster(position_id, position_name) values(101, 'SeniorPosition'),(102, 'JrPosition')
    designationmaster(des_id, des_name) values(201, 'Manager'),(202, 'Lead')
    employeeMaster(emp_id, emp_name, emp_role) values(1001, 'Thomas', 'developer'),(1002, 'Lee', 'Sales'),(1003, 'Tony', 'BA')
    projectmaster(project_id, project_name, project_description) values(1,'Kana','Kana Project'),(2,'Billing', 'BillingProject')

所有员工都在employeemaster表中,但在mainadtatatable中,我具有基于sales_employee_id,developer_emp_id等角色的单独列,并且所有主表ID都将存储在maindatatable中

    maindatatables(id, position_id, des_id, sales_emp_id, developer_emp_id, project_id) values (1, 101, 201, 1002, 1001, 1), (2, 102, 202, 1001, 1002, 2)

我想编写一个查询,该查询将从maindatatable返回记录列表,而不是id,需要填充名称(在下面的数据集中,所有id的值都替换为各自的表名值,例如maindatamaster表sales_emp_id具有1001和developer_emp_id有1002然后应该用托马斯和李代替

    1, 'SeniorPosition', 'manager', 'Lee', 'thomas', 'kana'
    2,  'JrPosition', 'Lead', 'thomas', 'Lee' , 'Billing project'

可复制

    id    position_id   des_id   sales_emp_id  developer_emp_id   project_id
     1      101          201      1002            1001               1
     2      101          201      1001            1003               2

查询应该返回

    1, SeniorPosition, manager, Lee, thomas, kana
    2, SeniorPosition, manager, thomas, tony, billingproject

这里用内部连接,我用下面的查询中的名称替换id:

   select mdm.id, pm.project_name, dm.des_name, em.emp_name AS sales_emp_name, em.emp_name AS 
   developer_emp_name, prm.project_name
   from maindatatables mdt 
   join positionmaster pm on (mdt.position_id = pm.position_id)
   join designationmaster dm on (mdt.des_id = dm.des_id)
   join projectmaster prm on (mdt.project_id = prm.project_id)
   join employeeMaster em on (mdt.sales_emp_id = em.emp_id) //can I put a where condition here to check the role

此查询正常工作,sales_emp_id和developer_emp id相同(都为1001),但是如果sales_emp_id = 1001和developer_emp_id = 1002,则两个ID的返回值均为1002

我正在使用休眠模式。请提出一些更好的解决方案。有人可以在这里帮我吗。谢谢

专线小巴:

您可以employeeMaster第二次加入

select 
    mdm.id, 
    pm.project_name, 
    dm.des_name, 
    em1.emp_name AS sales_emp_name, 
    em2.emp_name AS developer_emp_name, 
    prm.project_name
from maindatatables mdt 
join positionmaster pm    on mdt.position_id = pm.position_id
join designationmaster dm on mdt.des_id = dm.des_id
join projectmaster prm    on mdt.project_id = prm.project_id
join employeeMaster em1   on mdt.sales_emp_id = em.emp_id
join employeeMaster em2   on mdt.developer_emp_id = em.emp_id

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java android中将两个函数结合在一起

如何在Django中将2个模型字段结合在一起?

如何在SQL中将一个月的工作日与年度假期结合在一起?

如何在Spark中将STRUCT的所有元素与1000多个元素结合在一起

如何在Kotlin中将多个Upper Bounds语法与委托语法结合在一起

如何在Kusto中将控制命令与参数化查询结合在一起?

如何在disp方法中将变量与字符串结合在一起?

如何在jq中将更新与函数结果结合在一起?

如何在熊猫中将布尔索引器与多索引结合在一起?

我如何在Python中将综合与ordereddict结合在一起?

如何在一个解决方案文件中将Angular 9前端与ASP.NET 4.7 API后端结合在一起?

在MongoDB中将一个或多个$ match组合在一起

如何将一个字段中的日期与另一个字段中的时间结合在一起-MS SQL Server

如何在一个字段或另一个字段中具有值的mongo和group记录中将$ group和$ or组合在一起?

在PostgreSQL中将CTE与IN结合在一起

如何在 BigQuery 中将多个表粘合在一起?

如何在Python中将3个元组组合在一起

如何在 Hive SQL 中将与时间相关的事件组合在一起

一个将单个结果与多个其他结果结合在一起的数据块

如何在SQL中使用LIKE子句及其通配符函数将一个条件/参数组合在一起?

在Hibernate中将多个结果结合在一起

如何将聚合查询与不同联接结合在一起?

如何将两个下一个结合在一起

如何将一个嵌套字典与另一个嵌套字典结合在一起,但前提是每个嵌套字典都有匹配的值?

Elasticsearch不止一个应该,必须和结合在一起

SQL将多个表与多个参数结合在一起

如何在Hibernate Search中将范围查询与关键字查询结合在一起?

如何在带有R的for循环中将“ paste”命令与“ ifelse”命令结合在一起?

如何在TypeScript中将有区别的联合与函数重载结合在一起