ورود

View Full Version : برگرداندن یک رکورد ازبین چن رکورد بعد از join



yasesepid
یک شنبه 29 تیر 1393, 17:20 عصر
سلام
دوتا جدول داریم به صورت زیر:
جدول اول به نام tb1 شامل فیلدهای id,name
جدول دوم به نام tb2 شامل فیلدهای picId,id,filename
در جدول دوم به ازای هر رکورد از جدول اول،بیش از یک رکورد وجود دارد اگر بخام فقط یک رکورد از جدول دوم در نتایج بیاد راه حل چیه؟
من از join به اینصورت استفاده کردم ولی رکورد تکرارری میاره

SELECT tb2.filename,tbl.name
FROM tb1 LEFT OUTER JOIN
tb2 ON tb1.id= tb2.id


داده جدول:

tb1 id=1 name=n1 id=2 name=n2
tb2 picid=1 id=1 filename=f1 picid=3 id=1 filename=f2 picid=5 id=2 filename=f5

خروجی مطلوب

name=n1,filename=f1
name=n2 ,file name=f5

لطفا راهنمایی بفرمایید

Salah Sanjabian
دوشنبه 30 تیر 1393, 00:14 صبح
سلام ،

SELECT T1.Name ,
(
SELECT TOP 1 filename
FROM tb2 T2
WHERE id = T1.Id
ORDER BY PicId DESC
)FileName
FROM dbo.tb1 T1


از Outer Apply هم میتونی استفاده کنی


SELECT T1.Name ,T2.FileName
FROM dbo.tb1 T1
OUTER APPLY
(
SELECT TOP 1 FILENAME
FROM tb2 T2
WHERE T1.Id = T2.Id
ORDER BY T2.picId
) T2

yasesepid
دوشنبه 30 تیر 1393, 12:07 عصر
سلام
هردو روش عالی بود تشکر