ورود

View Full Version : مشکل در relation بین جداول



pooria_googooli
دوشنبه 30 آبان 1390, 23:57 عصر
من تا الان از relation برای جداولم استفاده نمیکردم. الان میخواهم استفاده کنم ولی به یک مشکلی برخوردم . مثلا فرض کنید من دو جدول زیر را دارم :
[customer:[ID,Moshakhasat_ID,NO
[Moshakhasat:[ID,name,address
حالا من اگر بخواهم یک کوئری برای ورود اطلاعات بنویسم باید چجوری بنویسم. یعنی هم مشخصات مشتری ثبت بشه هم شمارش(NO).

mmd2009
سه شنبه 01 آذر 1390, 02:04 صبح
با سلام

قبل از اینکه چیزی بگم حتما پیشنهاد میکنم یک جزوه در مورد رابطه های Sql بخونید که حداقل بدونید ارتباط ها به چه گونه ای هستند

در ارتباطه مشتری و سفارش یک رابطه یک ( مشتری ) به چند ( سفارش ) هست که بعد از ایجاد رابطه شما زمانی میتونید در سفارش رکوردی ذخیره کنید که قبلا مشتری با همون کلید اصلی در اونجا وجود داشته باشه ،
یا به عبارتی کلید اصلی در جدول مشتری میشه مجوز شما برای ثبت اطلاعات درجدول سفارش بر اساس مقدار های کلید اصلی جدول مشتری.

پس همونطور که مشخصه کوئری های شما باید طوری تنظیم بشن که ابتدا مشتری ثبت بشه و سپس سفارش ثبت بشه

موفق باشید

pooria_googooli
سه شنبه 01 آذر 1390, 14:16 عصر
ببینید من رابطه بین جداول را بلدم . حتی این جدول هام را از روی نمودار er که تهیه کرده بودم طراحی کردم . مشکلی که من دارم این هست که شما فرض کنید داخل یک فرم قرار یک سری اطلاعات وارد بشه . که بخش مشخصات باید بره توی جدول moshakhasat و ID این رکورد بره توی جدول customer .مشکل من فقط همین قسمت هست که من چجوری این ID را برگردونم .

Galawij
سه شنبه 01 آذر 1390, 15:27 عصر
سلام دوست عزیز،
شما می توانید با دو تا دستور Insert همزمان در دو جدول درج کنید. یعنی با درج در جدول اول و بازیابی آخرین ID درج شده در جدول مشخصات، این ID را با شماره(NO) در جدول مشتریان درج کنید.(درج همزمان)
میتوانید یک کامبوباکس برای مشخصات بذارید و با انتخاب مورد مد نظر کاربر، ID این مورد را به دست بیارید و در جدول دوم با NO درج کنید(درج غیرهمزمان).

pooria_googooli
سه شنبه 01 آذر 1390, 20:32 عصر
خب مشکل من برای درج همزمان همینه که نمیتونم ID را برگردونم .

Galawij
چهارشنبه 02 آذر 1390, 07:25 صبح
آخرین ID درج شده از دستور () SCOPE_IDENTITY به دست می آید.
Select SCOPE_IDENTITY ()
فقط دقت کنید همه این دستورات باید تو یک Query و پشت سر هم اجرا شوند.
INSERT INTO Person.ContactType ([Name]) VALUES ('Assistant to the Manager');
GO
SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY];