[英]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.