PDA

View Full Version : نمیدونم کوئری دیتابیسم رو چه جوری بنویسم و نتیجه کوئری را در C# استفاده نمایم؟؟؟



maaaaaa
یک شنبه 01 آذر 1388, 07:50 صبح
سلام به دوستان

مطابق با فایلی که در ضمیمه قرار میدهم ،در دیتابیسم 3 جدول دارم

1-اطلاعات پرسنلی(tbl_shakhsi)
2-اطلاعات کیس(tbl_main)
3-اطلاعات نوت بوک(tbl_notebook)

رابطه میان جدول پرسنلی و کیس،یک به چند و رابطه بین جدول پرسنلی و نوت بوک هم یک به چند است،

سوال:

می خوام کوئری بنویسم که با گرفتن کد پرسنلی ،بره اطلاعات را از جداول کیس(tbl_main) و

نوت بوک (tbl_notebook) انتخاب کنه-

نکته ای که نمی دونم این کوئری را چه جوری بنویسم اینه که می خوام در نتیجه کوئری ام

اطلاعات تکراری آورده نشه،یعنی به ازای کیس های که فرد داره نره به همون تعداد در نتیجه کوئری ام نوت بوک بیاره-

مثلا الان در جدول شخصی ام فردی به نام علی احمدی دارم که 2 کیس با شماره های 700345و705180 داره و در جدول نوت بوک همین فرد،یک نوت بوک با کد 1000 داره

حالا می خوام کوئری ام را جوری بنویسم که به صورت زیر دیده شود:


PNO code_case code_notebook
1000 700345 831822
705180 831822


نمی خوام مجددا کد نوت بوک واسه ردیف دومم تکرار بشه،از طرفی می خوام که از این نتیجه

کوئری ام در زبان C# استفاده کنم.


خیلی به کمک دوستان نیاز دارم.

ممنون

sky_in_iran
یک شنبه 01 آذر 1388, 09:20 صبح
سلم دوست عزيز
sql براي اين كار يك راه حل خوب گذاشته استفاده از ادغام جداول با ineerjoin شما تو Select كه از جدولت ميگيري (اينم بگم سه تا جدول بايد تو يك بانك باشه ) با innerjoin جداولتو ادغام ميكني و با گذاشتن شرط مورد نظر اطلاعات و از هر جدول بدست مي آوري (ببخشيد من سركارم به دليل نبود امكانات نتونستم كد بزارم فقط در حد راهنمايي بود يه جستجو كني تو سايت كلي كد پيدا ميكني)



SELECT
Information.FN,
Information.LN,
Information.G,
UserTable.UserName,
UserTable.UserID
FROM
UserTable INNER JOIN Information
ON UserTable.UserId = Information.UserID
WHERE
(Information.UserID <> @MyUserID)
AND
(Information.UserID NOT IN
(SELECT FID
FROM Link
WHERE (Link.UserID = @MyUserID)))

maaaaaa
یک شنبه 01 آذر 1388, 10:26 صبح
ممنون از توجهتون

اولا که اصلا جواب را متوجه نشدم

دوما،با عرض شرمندگی جواب سوال را در اکسس می خواهم

لطفا منو راهنمایی کنید،اگر راه حلی پیدا نکنم باید کلا ساختار برنامه و دیتابیسم را عوض

کنم که خیلی زمان گیره......

ممنون

sky_in_iran
یک شنبه 01 آذر 1388, 10:59 صبح
دوست عزيز كجاي جواب و متوجه نشدي ؟ كدي كه گذاشتم يك مثال چيزه خاصي نيست تو access هم ميتوني از همين روش استفاده كني inner join فقط براي sql نيست تو access هم ميتواني استفاده كني حتي براي راحتي برو تو خوده اكسس يه query كه دوست داري درست كن و بعد كدشو كپي كن بذار تو برنامت اينم كدش يه query تو access بذار بعد اين وكپي كن نتيجه رو ميبيني اگه شوالي بود در خدمتم





SELECT tbl_shakhsi.pno, tbl_shakhsi.name, tbl_shakhsi.lanme, tbl_notebook.code_notebook, tbl_main.code_case
FROM (tbl_shakhsi INNER JOIN tbl_main ON tbl_shakhsi.pno = tbl_main.pno) INNER JOIN tbl_notebook ON tbl_shakhsi.pno = tbl_notebook.pno
WHERE (((tbl_shakhsi.pno)=[Enter code ]));

sky_in_iran
یک شنبه 01 آذر 1388, 11:02 صبح
كمي غلط املايي داشتم ببخشيد تند نوشتم اينم بگم تو access اصلا ما دستورات sql داريم براي همه كارها ميتوني از insert , delete , update , select استفاده كني كمي محدوديت داره ديگه procedur نداره به جاش query بزار