PDA

View Full Version : نحوه ی طراحی کوئری



VisualStudio
چهارشنبه 31 مرداد 1386, 19:05 عصر
من در بانک اطلاعاتم دو جدول دارم که در یکی از اون ها دوفلید وجود داره که یکیش ID و دیگری نام شرکت هست و جدول دیگر مربوط هست به محصول که اطلاعات اون درش ذخیره می شه حالا من در جدول دوم به جای نام شرکت ID اون شرکت را قرار می دم اما من میخوام در زمانی که یک لیست کامل از محصولات را نمایش می دم به جای ID اون شرکت در دیتاگرید نام اون شرکت نمایش داده بشه نحوه کوئری به چه صورت میشه کلا چطوری این کار انجام بدم ( بانک من اکسس هست)

PC2st
چهارشنبه 31 مرداد 1386, 23:50 عصر
جدول Table1 دو فیلد ID و Company داره.
جدول Table2 دو فیلد ID و Product رو داره.
در حین خواندن اطلاعات و قرار دادن آن در DataGridView میخوایم که Company و Product نمایش داده بشه.
دستور SELECT رو بصورت زیر مینویسیم:


SELECT Table1.Company, Table2.Product FROM Table1, Table2 WHERE Table1.ID = Table2.ID

VisualStudio
پنج شنبه 01 شهریور 1386, 11:56 صبح
اگر من جداولم 5 تا بشه چکار باید بکنم یعنی اینکه مثلا به جزه نم شرکت جداول دیگری از قبیل نوع محصول ، خریدار را هم به همین صورت در یک جدول دیگر ثبت کرده باشم و در جدول محصولات فقط ID اون ها باشه و در دیتاگرید نام اون ها چطور

PC2st
پنج شنبه 01 شهریور 1386, 14:51 عصر
یک نمونه گذاشتم، 4 جدول که با هم ارتباط دارند، برای گرفتن کوئری هم از خود MS Access استفاده کردم.

VisualStudio
پنج شنبه 01 شهریور 1386, 15:17 عصر
چگونه با کد نویسی این کار را کنم راستی من باید حتما بین جداولم رابطه برقرار کنم تو اکسس ، بدون رابطه نمیشه

PC2st
پنج شنبه 01 شهریور 1386, 15:30 عصر
راستی من باید حتما بین جداولم رابطه برقرار کنم تو اکسس
بین اون جداول هم رابطه وجود داره (نمونه برنامه)، مثلا جدولهاتون رو ایجاد کردید، برای ایجاد رابطه یا دیدن رابطه بین جداول، از منوی Tools گزینه Relationships رو انتخاب کنید، در اونجا نام جداولی که میخواید رابطه داشته باشند رو بهش اضافه کنید و کافی است که با Drag and Drop یک فیلد از جدولی رو روی فیلد دیگری از جدول دیگری، بکشید. سپس تنظیمات رو بهش بدید و ذخیره اش کنید، اینطوری رابطه بینشون ایجاد میشه. (برای تغییر روی رابطه ای که قبلا ایجاد کردید، در همان صفحه، روی خطی که بین دو جدول وصل شده، دوبار کلیک کنید)

برای نوشتن دستور SELECT هم به قسمت Queries بروید و روی Create query in Design View کلیک کنید و بعد از اینکه query رو ساختید، قبل از خروج از قسمت query design از منوی View گزینه SQL View رو انتخاب کنید تا دستور SELECT ایجاد شده رو ببینید و اگر خواستید در برنامه مورد استفاده قرار بدید.

نمیدونم منظورتون رو متوجه شدم یا باید چیز دیگری میگفتم؟!

VisualStudio
پنج شنبه 01 شهریور 1386, 15:45 عصر
میشه بین جداول هیچ رابطه ای نباشه

PC2st
پنج شنبه 01 شهریور 1386, 15:52 عصر
میشه بین جداول هیچ رابطه ای نباشه
آره میشه رابطه ای هم نباشه...

VisualStudio
پنج شنبه 01 شهریور 1386, 15:56 عصر
مشکلی پیش نمی یاد حالا اگر رابطه ای باشه چه فایده ای داره

PC2st
پنج شنبه 01 شهریور 1386, 17:40 عصر
اگر بین دو یا چند جدول رابطه وجود داشته باشه، مزیتهائی داره از جمله:

1- میتوانیم وادار کنیم که رابطه ها بصورت Referential integrity باشند (اختیاری)، یعنی اینکه اگر فیلد ID از جدول 1 به فیلد ID از جدول 2 بصورت یک به چند رابطه داشته باشند، میتوانیم کاری کنیم که در جدول 2 مقدار فیلد ID همواره جزء یکی از مقادیری باشه که اون فیلد در جدول 1 داره، بعبارت دیگه، وقتی بخوایم رکوردی رو به جدول 2 اضافه کنیم که فیلد ID آن، جزء مقادیر موجود در فیلد ID از جدول 1 نباشه، در اینصورت این رکورد اضافه نمیشه (ارور دریافت میکنیم)

2- جداولی که با هم ارتباط دارند رو نمیشه به هر طریقی تغییر داد (مثلا Primary Key رو از روی یک فیلد برداریم). پس این کمک میکنه که داده ها اشتباهی وارد نشوند.

3- میشه کاری کرد که وقتی یک رکورد از توی یک جدول پاک شد، اون رکورد اگر یکی از فیلدهاش رابطه یک به چند با جدول دیگری داشت، بقیه رکوردها که به نوعی با اون رکورد ارتباط داشتند، بصورت اتوماتیک حذف شوند. یعنی یک رکورد رو پاک کنید و بقیه رکوردهای مرتبط به اون، خودشون پاک میشند (اختیاری).

4- چیزهای دیگه ای هم هست...! که فعلا تا اینجاش رو میدونم :-)


در کل خیلی بهتره که رابطه رو بین جداول ایجاد کنیم.