PDA

View Full Version : چگونه اطلاعاتی را که بصورت سطر به سطر در پایگاه داده ذخیره شده در یک سطر نمایش دهیم؟



4EBRAHIM4
چهارشنبه 20 اسفند 1393, 20:21 عصر
ما دو تا جدول داریم که یکی برای ثبت نام درس ها است و یکی هم برای ثبت پیش نیاز های هر درس که در جدول دوم برای هر درس یک پیش نیاز نوشته می شود(بر اساس کد) اگه یکی از درس ها چند پیش نیاز داشته باشه در چند سطر این اطلاعات نوشته می شود برای مثال در سطر اول کد یکی از پیش نیاز ها و در سطر بعدی نام پیش نیاز بعدی نوشته میشود حالا ما می خوایم این اطلاعات در یک دیتا گرید ویو نشان داده شود
بطور مثال ما 4 درس به نام های "ریاضی 1-ریاضی2-معالات دیفرانسیل-ریاضی مهندسی" داریم و میخوایم توی برنامه یه دیتا گرید ویو داشته باشیم که به صورت زیر باشه
129367

4EBRAHIM4
جمعه 22 اسفند 1393, 07:47 صبح
دوستان سخته ؟ اصلا یه همچین کاری ممکنه؟ بابا تورو خدا یه چیزی بگین

ali_md110
جمعه 22 اسفند 1393, 11:10 صبح
هم دستورات sql میتونید استفاده کنید با حلقه ها و split کردن سطرها
تابع زیر توی اسکیول پیاده کنید



create FUNCTION [dbo].[Split](@String varchar(MAX), @Delimiter char(1))
returns @temptable TABLE (items varchar(MAX))
as
begin
declare @idx int
declare @slice varchar(8000)

select @idx = 1
if len(@String)<1 or @String is null return

while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String

if(len(@slice)>0)
insert into @temptable(Items) values(@slice)

set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end;


برای استفاده توی دستورات اسکیول این تابع را با join از نوع outer apply بکاربرید



select ,
t1.name,
i.items pishnyaz
from yourtable t1
outer apply dbo.split(t1.subjects, ',') i



یک راه دیگه با کد سی شارپ رکوردهاتون توی یک حلقه بگیرید مثلا 4 سطر از جدول پیش نیازها
بعد مقدار فیلد ستون مورد نظر بچسبونیدش و بریزید توی یک متغیر رشته ای