在case中使用join

2skhul33  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(195)

我有一个问题,这是非常具体的数据库,我在工作中得到。我真的不能改变一些东西,它是非常巨大的,所以我需要处理它。
我想做的是链接一个回到工厂的产品。事实上,产品可以多次返回。
在数据库中,产品出厂时,我们不再使用他的id。当他回来时,我们创建一个新的id并使用名为“idproductparent”的外键。
所以把产品和他在工厂时的身份证联系起来其实并不难。
问题是,如果产品再次离开工厂,几周后回来(我们在做售后服务),我们没有使用“idproductparent”,而是使用“idproductprevious”,这是他最后一次进厂时的外键。
我想做的是把工厂里的产品和他最后一批产品的售后服务结合起来。
如果我在“idproductprevious”或“idproductparent”上进行连接(当不为null时),我将得到一些结果,但返回多次的产品将不会显示。
如果你有什么想法或者你需要一些细节就说出来。
谢谢。

SELECT p.idProduct as ProductFactory, pback.idProduct ProductBack
FROM PRODUCT p 
JOIN PRODUCT pback ON pback.idProductParent = p.idProduct

这个请求给了我来自工厂的产品id和产品返回时的产品id。
如果产品返回新时间,我将需要使用此查询

SELECT p.idProduct as ProductFactory, pback.idProduct ProductBack, pback2.idProduct ProductBack2
FROM PRODUCT p 
LEFT JOIN PRODUCT pback ON pback.idProductParent = p.idProduct
LEFT JOIN PRODUCT pback2 ON pback2.idProductPrevious = pback.idProduct

需要输出:

ProductFactory        ProductBack              ProductBack2
 1                         50                       51

如果产品下次再来,我会用这个:

SELECT p.idProduct as ProductFactory, pback.idProduct ProductBack, pback2.idProduct ProductBack2, pback3.idProduct ProductBack3
FROM PRODUCT p 
LEFT JOIN PRODUCT pback ON pback.idProductParent = p.idProduct
LEFT JOIN PRODUCT pback2 ON pback2.idProductPrevious = pback.idProduct
LEFT JOIN PRODUCT pback3 ON pback3.idProductPrevious = pback2.idProductPrevious

需要输出:

ProductFactory        ProductBack              ProductBack2               ProductBack3
 1                         50                       51                         52

我不确定“左”字,但我想你知道我的问题是什么。我不知道有多少次产品会回来,我不想使用的左连接,因为该产品可能会回来。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题