PDA

View Full Version : 2 سلکت خاص از جدول



modern_amin
شنبه 23 شهریور 1392, 11:54 صبح
سلام دوستان
2 تا سوال داشتم ممنون میشم جواب بدید تا بدونم آیا میشه و اینکه قدرت SQL آگاه تر بشوم
(سرچ زدم ولی یا پیدا نشد و یا جواب کاملی نداشت و یا کمی فرق داشت با موضوع بنده...)
بنده زیاد با SQL بصورت تخصصی آشنا نیستم لطفا ساده تر تشریح کنید......


سوال اول: چطور میتونم هنگام خروجی گرفتن جای سطر و ستون رو تو خوده SQL عوض کنم
دوستی میفرمودن PIVOT ولی من آگاهی ندارم نسبت به کار و نحوه انجامش....آیا راه حل دیگه ای هم هست؟
http://barnamenevis.org/attachment.php?attachmentid=110650


سوال دوم(سوال مهمتر): چطور میشه تو خود SQL بعد گرفتن سلکت و یک تغیییر سریع در یکی از ستونهای سلکت داد و اونرو مجددا آپدیت کرد تا جدول با مقدار جدید خودش رو ذخیره کنه؟ (در واقع میخام هنگام سلکت یک آپدیت هم بنویسم)این خیلی برام مهم اگه کسی میتونه کمک کنه لطفا کوتاهی نکنه....
http://barnamenevis.org/attachment.php?attachmentid=110651

lastmory
شنبه 23 شهریور 1392, 13:39 عصر
با سلام
راجع به سوال اول با ید بگه که شما چرا میخواهید این کار رو انجام بدید ، آیا گزارش میخواهید ؟؟؟
تا اونجایی که من میدونم نمیتونید اونجوری که میخواهید و عکسشو گذاشتید خروجی بگیرید با سلکت ، Pivot هم قضیه ش جداست ، pivot یه ماتریس میده بهتون با سطر و ستون مشخص و دیتا های مورد نیاز ، اما این عکسو با pivot نمیشه درآورد
راجع به سوال دوم
شما میتونی یه آپدیت بنویسی بعدش یه سلکت بزنی اینجوری که یه سلکت باشه که هم دیتا برگردونه و هم آپدیت کنه ؟؟ نه نمیشه
آپدیتت هم مشخصه اینطوری میشه
Update Tbl
Set JamS1S2 = S1 + S2

modern_amin
شنبه 23 شهریور 1392, 15:13 عصر
با تشکر از شرکتتون تو تایپیک

تصور کنید یک جدول هست با 200 ستون که درحال حاضر 10 سطر داره
من اگه بخام از محتویات ستونهای این ده سطر سردر بیارم و بعنوان مثال بفهمم که چندتا از این ستونهای این 10 سطر مقدار 1 ذخیره شده کاره مشکلی پیش رو دارم مثلا اگه
بخام مثلا با case when بنویسمش حدود 200خط فقط کوئری من میشه
حال اگه جدول بچرخه کارمن بمراتب راحت تر میشه و دست ما تویه سطرها بمراتب باز تر از ستونها هست.....
(البته اینکار با کدنویسی تو مثلا سی شارپ کار سختی نیست)
.
.
سوال دوم برام مهمه چون هم پرکاربرده هم هیچی ازش نمیدونم
بله میخام بعد هر سلکت سریع هر سطر خودشو آپدیت هم کنه که اگه تغییراتی در ستونها انجام شده بود اطلاعات ستون مورد نظر من درست باشه
نمیخام اینکار رو جدا انجام بدم و سرعت هم برام خیلی مهمه......

modern_amin
دوشنبه 25 شهریور 1392, 16:11 عصر
?????????????????????????????///

محمد سلیم آبادی
دوشنبه 25 شهریور 1392, 20:30 عصر
تصور کنید یک جدول هست با 200 ستون که درحال حاضر 10 سطر داره
من اگه بخام از محتویات ستونهای این ده سطر سردر بیارم و بعنوان مثال بفهمم که چندتا از این ستونهای این 10 سطر مقدار 1 ذخیره شده کاره مشکلی پیش رو دارم مثلا اگه
بخام مثلا با case when بنویسمش حدود 200خط فقط کوئری من میشه
حال اگه جدول بچرخه کارمن بمراتب راحت تر میشه و دست ما تویه سطرها بمراتب باز تر از ستونها هست.....
(البته اینکار با کدنویسی تو مثلا سی شارپ کار سختی نیست)تعجب میکنم با اینکه من در تاپیک دیگه جواب سوال شما را با یک راه حل ساده دادم هنوز براتون مساله پابرجاست!
این مطلب را ببینید که 3 سال پیش نوشتم:

http://www.30sharp.com/article/13/248/11/%D8%AA%D8%AC%D9%85%D8%B9-%D8%B3%D8%AA%D9%88%D9%86%DB%8C-column-aggregates.aspx

یا از این مثال ساده الگو برداری کنید:

declare @t table
(row_id int, c1 int, c2 int, c3 int)

insert @t values (1,1,2,3),(2,1,1,1),(3,1,2,1),(4,2,3,4)

select row_id, sum(case when i = 1 then 1 else 0 end) as cnt
from @t
cross apply (values(c1),(c2),(c3))d(i)
group by row_id;

/* Result
row_id cnt
----------- -----------
1 1
2 3
3 2
4 0
*/


سوال دوم(سوال مهمتر): چطور میشه تو خود SQL بعد گرفتن سلکت و یک تغیییر سریع در یکی از ستونهای سلکت داد و اونرو مجددا آپدیت کرد تا جدول با مقدار جدید خودش رو ذخیره کنه؟ (در واقع میخام هنگام سلکت یک آپدیت هم بنویسم)این خیلی برام مهم اگه کسی میتونه کمک کنه لطفا کوتاهی نکنه....سوالتون خیلی کلیه.
میتونید بر اساس داده های چند جدول عمل UPDATE را انجام بدین (update based on joins)
همچنین راجب MERGE نیز تحقیق کنید.