PDA

View Full Version : مشکل در Group BY و Inner Join



takparz
شنبه 28 تیر 1393, 17:32 عصر
با سلام
دو تا جدول tbl_album ,tbl_gallery دارم که tbl آلبوم به عنوان دسته بندی عکس های tbl_gallery به کار میره

ستون های tbl_album:
Id,al_name

ستون های tbl_gallery:
Id,album_id,ga_pic_title,ga_file_name

هست.

میخوام سه تا آلبوم آخری که ساخته شده رو با آخرین عکس از اون آلبوم که رو نمایش بدم.
من از این دستور استفاده کردم :

select al.Id, al.al_name, ga.ga_file_name from tbl_album al inner join tbl_gallery ga on al.Id=ga.album_id order by Id desc

121284
و وقتی میخوام از Group By استفاده کنم خطا میده:
121285

آیا دستورم درسته؟
روش بهتری وجود داره؟

ham3d1988
یک شنبه 29 تیر 1393, 11:32 صبح
سلام ، این شکلی تست کنید شاید جواب بگیرید

select top 3 ga.id,a.al_name,ga.ga_file_name from tbl_album a
join( select top 1000 * from tbl_gallery ga1 order by ga1.id desc) ga on a.Id=ga.al_id
group by a.Id,ga.id,a.name,ga.ga_file_name order by a.Id desc

takparz
یک شنبه 29 تیر 1393, 13:36 عصر
سلام ، این شکلی تست کنید شاید جواب بگیرید

select top 3 ga.id,a.al_name,ga.ga_file_name from tbl_album a
join( select top 1000 * from tbl_gallery ga1 order by ga1.id desc) ga on a.Id=ga.al_id
group by a.Id,ga.id,a.name,ga.ga_file_name order by a.Id desc


سلام، مشکلم با این دستور حل شد:
select id, al_name, ga_file_name
from (select al.Id, al.al_name, ga.ga_file_name,
row_number() over (partition by al.id order by ga.id desc) as seqnum,
dense_rank() over (order by al.id desc) as seqnum_album
from tbl_album al inner join
tbl_gallery ga
on al.Id = ga.album_id
) t
where seqnum = 1 and seqnum_album <= 3;