آموزش SQL Server 2008 (بررسی سوالات و اشکالات مربوطه)

aina_21

عضو جدید
سلام:gol:
من برای انجام پروژه دانشگاه که در مورد کتاب فروشی میخام توی خود sql کوری بنویسم که تمام کتاب هایی که موضوع مشابه دارند را گروه کنه هر کتاب میتونه چندتا موضوع داشته باشه من یه جدول دارم که مشخصات و اسم کتاب در آن ذخیره شده و یک جدول دارم که کد هر کتاب با موضوع کتاب ذخیره شده مشکل من اینجاست که نمیدونم چطوری کتاب های هم موضوع را جدا کنم امیدوارم که مشکلمو رو درست بیان کرده باشم ممنون میشم اگه راهنماییم کنید:cry:
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
سلام:gol:
من برای انجام پروژه دانشگاه که در مورد کتاب فروشی میخام توی خود sql کوری بنویسم که تمام کتاب هایی که موضوع مشابه دارند را گروه کنه هر کتاب میتونه چندتا موضوع داشته باشه من یه جدول دارم که مشخصات و اسم کتاب در آن ذخیره شده و یک جدول دارم که کد هر کتاب با موضوع کتاب ذخیره شده مشکل من اینجاست که نمیدونم چطوری کتاب های هم موضوع را جدا کنم امیدوارم که مشکلمو رو درست بیان کرده باشم ممنون میشم اگه راهنماییم کنید:cry:

سلام
من متوجه نشدم که نتایج را برای گزارش میخواهید یا در فرمی می خواهید از هم جدا کنید؟ در ثانی، جدول موضعات شما جدا پر شده است و کتاب به این موضوعات لینک شده یا خیر برای هر کتاب، موضوعات را تایپ کردید و دسته ها ممکن است مشابه باشند اما یکی نباشند؟!
 

aina_21

عضو جدید
سلام
من متوجه نشدم که نتایج را برای گزارش میخواهید یا در فرمی می خواهید از هم جدا کنید؟ در ثانی، جدول موضعات شما جدا پر شده است و کتاب به این موضوعات لینک شده یا خیر برای هر کتاب، موضوعات را تایپ کردید و دسته ها ممکن است مشابه باشند اما یکی نباشند؟!

از توجه شما بسیار سپاسگزارم:gol::gol:
یک گزارشی از مشخصات کتاب هایی که موضوع مشابهی دارند
جدول موضوع دوتا فیلد داره یکی کد کتابه که کلید جدول کتابه و به جدول موضوع لینک شده یکی موضوعه این دوتا فیلد باهم کلید اصلی جدولند
در این جدول ممکنه یک کتاب چند تا موضوع داشته باشه و ممکنه یک موضوع برای چندتا کتاب باشه اما گزارشی که من میخام اینه که مثلا تمام کتابهایی که موضوع انها داستانی است
را در جدولی که نام کتاب و نام نویسنده ونام انتشارات و موضوع کتاب را در بر بگیرد نمایش بده (نام کتاب و نام نویسنده و نام انتشارات در جدول کتاب وجود داره)
 
آخرین ویرایش:

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
از توجه شما بسیار سپاسگزارم:gol::gol:
یک گزارشی از مشخصات کتاب هایی که موضوع مشابهی دارند
جدول موضوع دوتا فیلد داره یکی کد کتابه که کلید جدول کتابه و به جدول موضوع لینک شده یکی موضوعه این دوتا فیلد باهم کلید اصلی جدولند
در این جدول ممکنه یک کتاب چند تا موضوع داشته باشه و ممکنه یک موضوع برای چندتا کتاب باشه اما گزارشی که من میخام اینه که مثلا تمام کتابهایی که موضوع انها داستانی است
را در جدولی که نام کتاب و نام نویسنده ونام انتشارات و موضوع کتاب را در بر بگیرد نمایش بده (نام کتاب و نام نویسنده و نام انتشارات در جدول کتاب وجود داره)

سلام
شما به راحتی با استفاده از یک join و یک شرط میتونی query را بنویسی :gol:

کد:
select bookTable.*
from bookTable INNER JOIN RelTable ON bookTable.bookCode=RelTable.boolCode INNER JOIN
SubjectTable ON RelTable.SubjectID=SubjectTable.SubjectID
where  SubjectTable.SubjectID=@ID
 

aina_21

عضو جدید
سلام
شما به راحتی با استفاده از یک join و یک شرط میتونی query را بنویسی :gol:

کد:
select bookTable.*
from bookTable INNER JOIN RelTable ON bookTable.bookCode=RelTable.boolCode INNER JOIN
SubjectTable ON RelTable.SubjectID=SubjectTable.SubjectID
where  SubjectTable.SubjectID=@ID

خیلی ممنون از راهنماییتون:gol:
من تازه شروع کردم sql یادگرفتن ببخشید منظورتون از شرط و @ID نفهمیدم:w05:
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
خیلی ممنون از راهنماییتون:gol:
من تازه شروع کردم sql یادگرفتن ببخشید منظورتون از شرط و @ID نفهمیدم:w05:

دوست عزیز، شرط همون بخش جلوی where هست و @ID هم مقدار مربوطه است که مثلاً مقدار کلید موضوعی هست که میخوای کتاب ها رو روش جدا کنی.
 

shahrzad87

عضو جدید
ویرایش فیلدهای جدول

ویرایش فیلدهای جدول

سلام
وقتی می خوام نوع فیلدهای جدولی که قبلا ساختم رو تغییر بدم یا برای یک فیلد allow nul رو تیک بزنم، موقع save کردنش پیغام می ده و save نمیشه و باید کل جدول رو پاک کنم و دوباره بسازم ؟!!!!!
ممنون
:smile:
 

golemaryam_1983

عضو جدید
کاربر ممتاز
سلام
وقتی می خوام نوع فیلدهای جدولی که قبلا ساختم رو تغییر بدم یا برای یک فیلد allow nul رو تیک بزنم، موقع save کردنش پیغام می ده و save نمیشه و باید کل جدول رو پاک کنم و دوباره بسازم ؟!!!!!
ممنون
:smile:

سلام دوست عزیز چه پیغامی میده میشه اینجا بزارید؟


با تشکر
 

shahrzad87

عضو جدید
saving changes is not permitted. the changes you have made require the following tables be dropped and re-created. you have either made changes to a table that cant be re-created or enabled the option Prevent saving changes that require the table to be re-creatded.
این پیغام روو میده

 

shahrzad87

عضو جدید
saving changes is not permitted. the changes you have made require the following tables be dropped and re-created. you have either made changes to a table that cant be re-created or enabled the option Prevent saving changes that require the table to be re-creatded.
این پیغام روو میده



خودم جوابش رو پیدا کردم :)
sql server 2008

tools ->options->designers->table and db designers

تیک prevent saving changes رو برداشتم درست شد.
 

Ronin87

عضو جدید
سلام دوست عزیز
منم یه همچین مشکلی داشتم
از اینکه جواب را گذاشتی ممنون
 

Ronin87

عضو جدید
سلام
من یه فیلد با نوع nchar ایجاد کردم،اما تو برنامه c# وقتی فارسی تایپ میکنم به صورت علامت سوال میندازه
باید نوع فیلد را عوض کنم یا غیر از اینه؟؟؟
 

golemaryam_1983

عضو جدید
کاربر ممتاز
سلام
من یه فیلد با نوع nchar ایجاد کردم،اما تو برنامه c# وقتی فارسی تایپ میکنم به صورت علامت سوال میندازه
باید نوع فیلد را عوض کنم یا غیر از اینه؟؟؟

سلام دوست عزیز موقع اجرا برنامه در سی شارپ تغییر فونت میده؟
اگر موقع نصب sql پرشین رو انتخاب کرده باشید نباید مشکلی پیش بیاد. با nvarchar امتحان کنید ببینید درست میشه با نه.


با تشکر
 

alias67

عضو جدید
سلام
من میخوام یه نوع متغیر جدید یعنی تاریخ شمسی برای استفاده تو اس کیو ال بسازم .به من گفتن باید یه user defined type بسازی و ادامه. به همین خاطر یه پروژه تو ویژوال استودیو از مسیر زیر انتخاب کردم
New > Project > Database Projects > Microsoft SQL Server > SQL-CLR > SQL Server Project
و بعدش یه صفحه مث زیر میاد
untitled.JPG
که تو قسمت Server Name هیچی سروری پیدا نمیکنه حتی Refresh هم که میزنم باز هیچ سروری پیدا نمیکنه باید چیکار کنم که سرور رو بشناسه؟


بعدش رفتم سراغ SQL Server Configuration Manager و بعدش تو قسمت sqlserver(sqlexpress
قسمت peroperties رو باز کردم و تو قسمت Account Name یکی از اکانت ها رو انتخاب کردم و قتی هم start رو زدم خطای زیر رو میداد نمی دونم چیکار میشه کرد؟
من از
untitled1.JPG
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
سلام
من میخوام یه نوع متغیر جدید یعنی تاریخ شمسی برای استفاده تو اس کیو ال بسازم .به من گفتن باید یه user defined type بسازی و ادامه. به همین خاطر یه پروژه تو ویژوال استودیو از مسیر زیر انتخاب کردم
New > Project > Database Projects > Microsoft SQL Server > SQL-CLR > SQL Server Project
و بعدش یه صفحه مث زیر میاد
مشاهده پیوست 62196
که تو قسمت Server Name هیچی سروری پیدا نمیکنه حتی Refresh هم که میزنم باز هیچ سروری پیدا نمیکنه باید چیکار کنم که سرور رو بشناسه؟


بعدش رفتم سراغ SQL Server Configuration Manager و بعدش تو قسمت sqlserver(sqlexpress
قسمت peroperties رو باز کردم و تو قسمت Account Name یکی از اکانت ها رو انتخاب کردم و قتی هم start رو زدم خطای زیر رو میداد نمی دونم چیکار میشه کرد؟
من از
مشاهده پیوست 62197

یه راه ساده تر هم هست. میتونی اجزا رو جدا بگیری (سال، ماه، روز) و بعد با یک تابع ساده برای نمایش به هم بچسبونیش. البته راه دیگش هم اینه که همون تاريخ میلادی بگیری و با یک تابع هر بار تبدیلش کنی به شمسی :gol:
 

majid.hosseinzad

عضو جدید
سوال: آیا در SQL Server این امکان وجود داره که جدولی رو بر اساس یکی از فیلدهاش مرتب کنیم بدون اینکه ترتیب مقادیر در یک فیلد خاص تغییری بکنه؟ به عبارت دیگه یک فیلد از جدول تحت تاثیر این مرتب سازی قرار نگیره؟
 

Topcoding

عضو جدید
سوال: آیا در SQL Server این امکان وجود داره که جدولی رو بر اساس یکی از فیلدهاش مرتب کنیم بدون اینکه ترتیب مقادیر در یک فیلد خاص تغییری بکنه؟ به عبارت دیگه یک فیلد از جدول تحت تاثیر این مرتب سازی قرار نگیره؟
سلام دوست عزیز
به هر حال همه فیلدها صفتهای یک موجودیتند...نمیشه که یه فیلد(صفت) از موجودیتها رو مرتب کنیم و یکی از صفتها ثابت بمونه(ترتیبش رو حفظ کنه)و بقیه صفتهای دیگه ی اون موجودیت رو همراهی نکنه...
من فکر نمیکنم چنین کاری عملی بشه...!
 

elahe_1368

عضو جدید
درخواست سوال

درخواست سوال

باسلام چندتانمونه سوال وپرس وجوسselectواسم بذاریدممنون
 

marjan.gh

عضو جدید
سلام . من یه db دارم که جدول های زیر رو داره
Capture.JPG
جدول goods اسم یه سری کالاست و تعداد کالاها (entity) که مشخصاتشون و تعداد اون کالا در اون فاکتور(num) تو جدول details نگه داشته میشن و تو جدول header که سربرگ فاکتورهاست نوع فاکتور مشخص میشه . اگه kind برابر 1 بود خرید و اگه 2 بود فروش رو نشون میده . از طرفی هرفاکتور(Header) با 0 تا m تا Details در ارتباطه .
و اما سوال : query برای اینکه موجودی فعلی تمام کالاهای ثبت شده در db را پیدا کند : موجودی فعلی = تعداد موجودی در جدول کالا + تعداد خرید ها - تعداد قروش ها

قبلش کلی مرسی .
 

Topcoding

عضو جدید
سلام . من یه db دارم که جدول های زیر رو داره
مشاهده پیوست 66077
جدول goods اسم یه سری کالاست و تعداد کالاها (entity) که مشخصاتشون و تعداد اون کالا در اون فاکتور(num) تو جدول details نگه داشته میشن و تو جدول header که سربرگ فاکتورهاست نوع فاکتور مشخص میشه . اگه kind برابر 1 بود خرید و اگه 2 بود فروش رو نشون میده . از طرفی هرفاکتور(Header) با 0 تا m تا Details در ارتباطه .
و اما سوال : query برای اینکه موجودی فعلی تمام کالاهای ثبت شده در db را پیدا کند : موجودی فعلی = تعداد موجودی در جدول کالا + تعداد خرید ها - تعداد قروش ها

قبلش کلی مرسی .
سلام دوست عزیز
جدول goods فکر کنم احتیاجی بهش نیست ...البته من نمیدونم شاید جاهای دیگه ازش استفاده میکنین....
برای محاسبه موجودی فعلی تمام کالاها هم کافیه تعداد خرید رو از تعداد فروش ها کم کنیم...این تعداد موجودی در جدول کالا رو من نفهمیدم و اصلا جدول کالا کدوم هست...
کد زیر رو نوشتم بررسی کنین اگه جواب داد و فهمیدین که هیچ وگرنه سوالی بود به همراه یه توضیح جامع ولی کوتاه بپرسین اگه بلد بودیم جواب میدیم...
کد:
SELECT  d.H_ID ,SUM(entity) AS t1 INTO  #temp_table   FROM Details d
WHERE d.H_ID in(SELECT H_ID FROM Header h)
GROUP BY d.H_ID
            [COLOR=#ff0000]SELECT * FROM  #temp_table[/COLOR]  
 DECLARE @sum INT , @s1 INT , @s2 INT
DECLARE _cursor CURSOR
FOR
    SELECT t1 FROM #temp_table 
OPEN _cursor
FETCH NEXT FROM _cursor INTO @s1
FETCH NEXT FROM _cursor INTO @s2
SET @sum=@s1-@s2
SELECT @sum AS 'sum of ALL'
CLOSE _cursor
DEALLOCATE _cursor
DROP TABLE #temp_table
خب البته این راه من بود... و همیشه برای هر مسئله راه حل بسیار است...دوستان اگه راه حل بهتری به ذهنشون رسید بگن ما روشن شیم :D
کد بالا اونجا که قرمز کردم میتونین پاک کنید فقط برای نشون دادن اطلاعاته یه جدوله با دو فیلد و دو سطر که اولی خرید و دومی فروش رو نشون میده که بعد این دوتا رو از هم کم میکنه و جواب آخر رو به صورت جدول تک فیلده با عنوان sum of ALL نشان میدهد...
امیدوارم که منظورتون رو خوب متوجه شده باشم و جواب مورد نظرتان را داده باشم
موفق باشین
یاحق​


 

marjan.gh

عضو جدید
سلام ، مرسی از وقتی که گذاشتین و کمکی که کردین . فکر کنم منظورمو درست متوجه نشدین . اما باعث شدین جهت فکر کردنم تغییر کنه و خودم بتونم یه راه پیدا کنم اگرچه بنظر بهینه نیست .
داده های جدول و راه حل خودمو مینویسم تا متوجه منطورم بشین .
Details
D_IDNUMH_IDG_ID
110111
2111122
321233
45411
570422
614333











Header


kind
H_ID
1(خرید)
1
2(فروش)
2
1(خرید)
3
2(فروش)
4








Goods
Entity
G_ID
100
11
200
22
300
33



منظورم از جدول کالا همون Goods بوده که مقدار اولیه کالا که entity باشه رو نگه داری میکنه . و واسه همین بهش نیاز داریم



update Details set Details.num= -(num)
from Details , Header
where Details.H_Id=Header.H_Id and Header.kind='2' and details.num >0
(تا این قسمت اونایی که فروش بوده را به جای مقادیر مثبت ، مقادیر منفی ذخیره میکنم . )

select Details.G_Id , sum(num)as num into #temp
from Details, goods
where goods.G_Id=Details.G_Id
group by Details.G_Id

(مجموع مقادیر خرید(مثبت هستن) با مقادیر فروش(منفی هستن ) رو بدست میارم. و براساس G_ID تو یه جدول جدید میزارم .)

select #temp.G_ID , (#temp.num+Goods.entity) as result
from #temp inner join Goods on goods.G_ID=#temp1.G_ID
drop table #temp

(حالا دیگه مجموع خریدها و فروش ها رو با مقدار اولیه که entity هست جمع میزنم تا موجودی فعلی حاصل بشه).
 
آخرین ویرایش:

Topcoding

عضو جدید
سلام ، مرسی از وقتی که گذاشتین و کمکی که کردین . فکر کنم منظورمو درست متوجه نشدین . اما باعث شدین جهت فکر کردنم تغییر کنه و خودم بتونم یه راه پیدا کنم اگرچه بنظر بهینه نیست .
سلام
خواهش میکنم
آره، مشکل از من بود بد متوجه شده بودم...فیلد Num رو فکر میکردم نام کالاست (اشتب رو داشته باش تا کجا)
خوشحالم که تونستین خودتون به جواب برسین و لذتی بالاتر از این نیست....و خوشحال از اینکه نظرم جهت فکرتون رو به بی راهه نکشوند.....

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

صحرا 987654321

عضو جدید
sql

sql

سلام به همه گی و خسته نباشید بابت زحماتتوندر SQL server2008 ، چگونه میشود نحوه مرتب سازی در فیلد Class را اصلاح نمود ؟!
 

naimi ali

عضو جدید
سلام.... من درس پایگاه دارم و متاسفانه 1 جلسه غیبت داشتم و عملگر isnull رو نبودم و هرچی می خونم متوجه نمی شم اگه ممکنه یه شرح مختصری به هم بدین ممنون می شم؟؟؟

من این تاپیک و نگاهی که کردم شما واقعا فعال هستید براتون آروزی موفقیت روز افزون دارم
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
سلام.... من درس پایگاه دارم و متاسفانه 1 جلسه غیبت داشتم و عملگر isnull رو نبودم و هرچی می خونم متوجه نمی شم اگه ممکنه یه شرح مختصری به هم بدین ممنون می شم؟؟؟

من این تاپیک و نگاهی که کردم شما واقعا فعال هستید براتون آروزی موفقیت روز افزون دارم

ISNULL برای مواقعی استفاده میشود که فيلد خاصی NULL باشد ولی شما نخواهید NULL برگردانید و بخواهید در صورت NULL بودن فیلد یا متغیر یا ... مقداری دیگر برگردانده شود.
مثلاً اگر فیلدی برای گروه کالا در نظر گرفته باشیم و در یک جدول از 10 کالا مثلاً 7 تای آن گروهبندی نشده بود و NULL بود میتوان نوشت:
کد:
ISNULL(fieldName,'گروهبندی نشده')

امیدوارم متوجه شده باشید. سئوالی داشتید در خدمتم :gol:
 

naimi ali

عضو جدید
ISNULL برای مواقعی استفاده میشود که فيلد خاصی NULL باشد ولی شما نخواهید NULL برگردانید و بخواهید در صورت NULL بودن فیلد یا متغیر یا ... مقداری دیگر برگردانده شود.
مثلاً اگر فیلدی برای گروه کالا در نظر گرفته باشیم و در یک جدول از 10 کالا مثلاً 7 تای آن گروهبندی نشده بود و NULL بود میتوان نوشت:
کد:
ISNULL(fieldName,'گروهبندی نشده')

امیدوارم متوجه شده باشید. سئوالی داشتید در خدمتم :gol:


مرسی متوجه شدم....
 

salome

عضو جدید
سلام
یه سوالی داشتم ممنون میشم اگه پاسخ بدین . من خودم مدت زیادیه که با SQL کار میکنم ولی توی یه پروژه به یه مشکل برخورد کردم ..................... مسئله اینه که یکی از مقادیر فرض کنین ستون account برای یه مشتری باید update بشه مثلا به ازای خرید یه جنس باید از حساب مشتری کم بشه ولی موضوع اینجا است که قیمت این جنس داخل یه table دیگه است و هیچ راهی برای آوردن اون قیمت نیست حتی من یه query نوشتم و فراخوانی کردم ولی فراخوانی جواب نمیده . و از طرفی نمی خوام به فرمت table هام دست بزنم به نظرتون راه حلی وجود داره؟
 

Similar threads

بالا