简体   繁体   English

SQL 查询根据列值获取数据

[英]SQL query to fetch data based on column value

Is it possible to get entire data in one attempt for this scenario?对于这种情况,是否可以一次尝试获取全部数据? I have this query where I need retrieve product name from another table.我有这个查询,我需要从另一个表中检索产品名称。

   SELECT T1.CASE_ID, 
       T2.PRODUCT_ID,
       T2.LEVEL,
       (CASE WHEN T2.LEVEL = 3 THEN T3.PARENT_PRODUCT_ID
            WHEN T2.LEVEL = 2 THEN T2.PRODUCT_ID
            WHEN T2.LEVEL = 1 THEN NULL END) AS NEW_PRODUCT_ID,
        T3.PRODUCT_NAME
   FROM TABLE1 T1
   LEFT OUTER JOIN TABLE2 T2
        ON T1.CASE_ID = T2.CASE_ID
   LEFT OUTER JOIN TABLE3 T3
        ON T2.PRODUCT_ID=T3.PRODUCT_ID 

Right now the T3.PRODUCT_NAME return value based on T2.PRODUCT_ID but what I really need is to able to retrieve data based on the value from NEW_PRODUCT_ID?现在基于 T2.PRODUCT_ID 的 T3.PRODUCT_NAME 返回值,但我真正需要的是能够根据 NEW_PRODUCT_ID 的值检索数据?

Here is my expected output:这是我预期的 output:

在此处输入图像描述

Hope this makes sense.希望这是有道理的。

You can use a subquery您可以使用子查询

SELECT T4.CASE_ID, T4.PRODUCT_ID, T4.LEVEL, T4.NEW_PRODUCT_ID, T5.PRODUCT_NAME
FROM (
    SELECT T1.CASE_ID, 
       T2.PRODUCT_ID,
       T2.LEVEL,
       (CASE WHEN T2.LEVEL = 3 THEN T3.PARENT_PRODUCT_ID
            WHEN T2.LEVEL = 2 THEN T2.PRODUCT_ID
            WHEN T2.LEVEL = 1 THEN NULL END) AS NEW_PRODUCT_ID,
        T3.PRODUCT_NAME
   FROM TABLE1 T1
   LEFT OUTER JOIN TABLE2 T2
        ON T1.CASE_ID = T2.CASE_ID
   LEFT OUTER JOIN TABLE3 T3
        ON T2.PRODUCT_ID=T3.PRODUCT_ID 
) AS T4
LEFT OUTER JOIN TABLE3 T5
    ON T4.NEW_PRODUCT_ID=T5.PRODUCT_ID

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM