PDA

View Full Version : عدم نمایش رکورد های تکراری



dr.pantagon
چهارشنبه 12 خرداد 1395, 09:25 صبح
سلام


من 2 تا تیبل دارم که به هم کلید خارجی شده فیلد Code . یکی جدول محصولات و یکی جدول عکس های مربوطه


حالا میخوام از جدول اول فقط کد Code رو بخونم و از جدول تصاویر مربوطه فقط یکی از عکس های مربوطه به این کد رو لود کنم


با این کد همه اطلاعات رو بر میداره میاره و من میخوام فقط از هر کد فقط یه رکورد رو بیاره حالی تصادفی یا اولین رکورد یا ...


SELECT DISTINCT dbo.T_File.code, dbo.T_Pic.ImageUrl, dbo.T_Pic.Description, dbo.T_Pic.Title, dbo.T_Pic.code AS Expr1FROM dbo.T_File INNER JOIN
dbo.T_Pic ON dbo.T_File.code = dbo.T_Pic.code
GROUP BY dbo.T_File.code, dbo.T_Pic.ImageUrl, dbo.T_Pic.Description, dbo.T_Pic.Title, dbo.T_Pic.code

140650

Mahmood_M
چهارشنبه 12 خرداد 1395, 11:35 صبح
اگر سایر فیلدها اهمیتی ندارند، می تونید GROUP BY رو فقط بر روی فیلد Code انجام بدید تا یک رکورد نمایش داده بشه
یا اینکه مثلا به صورت زیر Query بگیرید :


WITH CTETable AS
(
SELECT F.code, F.ImageUrl, P.Description, P.Title, P.code AS Expr1,
ROW_NUMBER() OVER (PARTITION BY F.Code ORDER BY ...) AS RN
FROM T_File AS F INNER JOIN T_Pic AS P ON F.code = P.code
)
SELECT * FROM CTETable WHERE RN = 1;

* کد رو تست نکردم
توی قسمت ORDER BY می تونید جدول رو بر اساس یک فیلد Sort کنید که اولین رکورد از اون لیست Sort شده انتخاب بشه، اگر هم اهمیتی نداره می تونید Sort نکنید

dr.pantagon
پنج شنبه 13 خرداد 1395, 01:15 صبح
اگر سایر فیلدها اهمیتی ندارند، می تونید GROUP BY رو فقط بر روی فیلد Code انجام بدید تا یک رکورد نمایش داده بشه
یا اینکه مثلا به صورت زیر Query بگیرید :


WITH CTETable AS
(
SELECT F.code, F.ImageUrl, P.Description, P.Title, P.code AS Expr1,
ROW_NUMBER() OVER (PARTITION BY F.Code ORDER BY ...) AS RN
FROM T_File AS F INNER JOIN T_Pic AS P ON F.code = P.code
)
SELECT * FROM CTETable WHERE RN = 1;

* کد رو تست نکردم
توی قسمت ORDER BY می تونید جدول رو بر اساس یک فیلد Sort کنید که اولین رکورد از اون لیست Sort شده انتخاب بشه، اگر هم اهمیتی نداره می تونید Sort نکنید

دقیقا اهمیت نداره ولی وقتی گروپ رو از روی همه فیلد ها بر میدارم و روی یه فیلد میزارم ارور میگیره و نمیزاره !

الان با کد شما مشکلم حل شد ولی میخوام بدونم دلیلش چیه !؟
لطفا بفرمایید

Mahmood_M
پنج شنبه 13 خرداد 1395, 02:23 صبح
دقیقا اهمیت نداره ولی وقتی گروپ رو از روی همه فیلد ها بر میدارم و روی یه فیلد میزارم ارور میگیره و نمیزاره !

الان با کد شما مشکلم حل شد ولی میخوام بدونم دلیلش چیه !؟
لطفا بفرمایید
نباید مشکلی وجود داشته باشه، پیغام خطا رو اینجا قرار بدید

dr.pantagon
جمعه 14 خرداد 1395, 11:02 صبح
سلام
الان من رکورد آخر , dbo.T_Pic.code رو حذف کردم و ارور زیر رو داد ( لازم به ذکر هست هر کدوم دیگه رو هم پاک کنم همین ارور رو میده و تفاوتی نمی کنه )

140673
تشکر