我有四张桌子: 订单,员工,供应,Supply_company
Order
------------------
Order_id
Order name
Emp_id
Employee
------------------
Emp_id
Emp_name
Supply
--------------------
Supply_id
Order_id
SupplierName
Supply_company
----------------------
Supply_company_id
Supply_id
Supplier_desc
address
在这4个表中,一个员工有多个订单,一个订单有多个供应ID,对于那个供应ID,我们有一个供应商desc。我希望根据Supplier_desc
显示Emp_id
。我得到了与所有订单相关的所有描述,但我需要针对特定订单获取特定的desc,我尝试了distinct,listagg,内部联接和左外部联接,并在where子句中使用了子查询,但我没有找到任何解决方案
答案 0 :(得分:0)
SELECT
O.EMP_ID,SC.*
FROM
SUPPLY_COMPANY SC
INNER JOIN
SUPPLY S
ON S.Supply_id=SC.Supply_id
INNER JOIN
Order O
ON O.Order_id=S.Order_id
WHERE O.Emp_id=123
答案 1 :(得分:0)
假设您有一个特定的EMP_ID和一个ORDER_ID,以下查询将为您提供与该员工和订单相关联的EMP_NAME和所有SUPPLIER_DESC:
SELECT DISTINCT e.EMP_ID, e.EMP_NAME, s.SUPPLIER_DESC
FROM EMPLOYEE e
INNER JOIN ORDER o
ON o.EMP_ID = e.EMP_ID
INNER JOIN SUPPLY s
ON s.ORDER_ID = o.ORDER_ID
INNER JOIN SUPPLY_COMPANY c
ON c.SUPPLY_ID = s.SUPPLY_ID
WHERE e.EMP_ID = your_emp_id AND
o.ORDER_ID = your_order_id
在这里,我们从EMPLOYEE,通过ORDER和SUPPLY,到可以找到SUPPLIER_DESC的SUPPLY_COMPANY,然后使用WHERE子句将结果过滤到我们关心的特定员工和订单 - 并且因为您可能不喜欢#39;我想要重复的行,我们在SELECT标准上放置了DISTINCT,告诉我们我们只想要每个唯一组合的一个例子。只需将your_emp_id
和your_order_id
替换为您感兴趣的EMP_ID和ORDER_ID值。请注意,如果您提供的EMP_ID和ORDER_ID在EMPLOYEE和ORDER表上没有任何共同点,那么您可以#39;此查询不会返回任何内容。
祝你好运。