SQL连接以避免两个表

时间:2015-09-10 04:22:21

标签: sql sql-server join

我有两张桌子,一张用于图像,一张用于零件。部件具有图像,但部件是重复的,因此图像是重复的。我想下载图片只需一个唯一的部件号。

One PartNumber HAS many images (all the same at different locations)
One PartID HAS one image (unique imageid)
One ImageID HAS one partnumber

我总结了下表:

Part Table: PartNumber, ImageID

Image Table: ImageID, ImageName, ImageSaved (true or false - 1,0)

示例数据将是:

部件:(P1,1),(P1,2),(P1,3),(P2,4)
图像:(1,I1,1),(2,I2,0),(3,I3,0),(4,I4,0)

因此,P1具有图像I1..3但它们实际上是相同的图像但存储在不同的位置。因此,一旦下载一次(imagesaved = 1),该部分的其他记录可以被忽略。

我尝试了以下内容来提取所有图像,但我需要添加一些东西来阻止系统下载所有重复的图像(现在正在发生)。

select * from trahanimage ti1 inner join  
(
select top 10 ti.imageid, trp.manpartnumber, ti.imagename,  
ti.imageurl,       row_number() 
over(partition by trp.manpartnumber order by trp.manpartnumber) as rk
from trahanimage ti
inner join trahanretailerpart trp 
on trp.imageid = ti.imageid
and ti.imagetype = 2
and ti.imageSaved = 0
and trp.currentpart = 1
and trp.shopid = 10 ) as summary on summary.imageid = ti1.imageid
and summary.rk = 1

这是第一次使用,但是在下载之后,imagesaved为一个记录(例如I1)更改为1,然后当下一批次运行时,它需要忽略为已保存图像的部分加入的图像。我认为在summary.rk之后需要一个新的连接。从逻辑上讲逻辑是

and summary.rk =1 and ti1.imageid not in (select imageid from
trahanimage where imagesaved = 1 and manpartnumber = part number in
inner join).

欢迎任何帮助。

0 个答案:

没有答案