PDA

View Full Version : فراخوانی و مقایسه اطلاعات از دو جدول دیتابیس



mostafa_tak2000
یک شنبه 09 آبان 1395, 17:44 عصر
سلام به همه دوستان
ببخشید دوستان سوالم را در تایپیک SQL مطرح کردم ولی پاسخی ندادند .

من دوتا جدول در Sql srver دارم به نام های ذیل
جدول ListRoom با دو تا فیلد به نام های ID یکتای کد اتاق و Name نام اتاق که این جدول حاوی 20 اتاق یک اداره هست . مثلا کد1 اتاق ریاست کد2 اتاق بایگانی کد 3 انبار کد 4 سالن اجتماعات و ...
جدول RoomOffice با دو تا فیلد به نام های IDRoom که کد اتاق مرتبط از جدول قبلی می باشد و IDOffice کد شعبه اداره می باشد. این جدول درواقع کد شعبه های اداره را به همراه کد اتاقهایی که هر اداره دارد در خود ذخیره می کند .
سوال اصلی بنده این است که چه کوئری باید بنویسم که وقتی کد یکی از شعبات را مثلا کد شعبه 1001 است را وارد کردم ابتدا لیست همه اتاقها مثلا 20 اتاق موجود در جدول ListRoom را نمایش دهد و سپس چک کند هر ID اتاق از جدول Listroom آیا در حدول RoomOffice موجود است و اگر موجود است مقدار True و اگر نه مقدار False را جلوی هر رکورد اتاق نمایش دهد .
امیدوارم تونسته باشم که سوال خود را واضح توضیح داده باشن . ممنون میشم که دوستان کمک کنند چند روزه درگیر این کوئری هستم ولی راهی پیدا نکردم . کوئریهایی که من نوشتم فقط اتاقهای موجود را نمایش میدن در حالیکه من میخوام همه اتاقهای موجود نمایش داده شوند و اگر اتاق برای IDoffice مورد نظر وجود دارد جلوی آن مقدار True نمایش داده شود .
با سپاس

mortezagt
یک شنبه 09 آبان 1395, 17:52 عصر
یه خورده بیشتر توضیح بده و ضمنا چندتا رکورد از جدول هات رو بزار تا بهتر بدونم
مثلا جدول لیست روم این رکوردها رو داره ووووو

mostafa_tak2000
دوشنبه 10 آبان 1395, 00:45 صبح
ممنون دوست عزیز
تصویر جدول ListRoom که در واقع حاوی اتاقهای بیمارستان هست . رکوردهای آن نیز در تصویر زیر موجو است
143251
تصویر زیر نیز رکوردهای جدول RoomHospital هست در واقع بیمارستانی با کد 1001 حاوی اتاقهای زیر است یعنی از لیست اتافهای بیمارستان که در جدول ListRoom هست فقط این اتاقها را دارد
143252
حالا من میخواهم که کوئری در SQlServer بنویسم که مانند شکل زیر ابتدا لیست کلیه اتاقهای بیمارستانی یعنی همون 30 اتاق جدول اولی را نمایش دهد و سپس به کمک جدول دومی اتاقهایی که برای بیمارستان 1001 هست جلوی آن True و اگر اتاق نیست عبارت False را نمایش دهد . در واقع می خواهم به کمک کوئری Sql اطلاعات بصورت زیر نمایش داده شود
143253
می بینید که لیست همه اتاقهای جدول اولی یا همان ListRoom نمایش داده شده است و اتاقهایی که بیمارستان 1001 دارد و در جدول دومی RoomHospital موجود است در ستون دوم با علامت تائید نشان میدهد حالا من میخوام که کوئری این کارا انجام دهد و در ستون موجود بودن مقدار True یا False را برگرداند . با سپاس

kamranetemadi
دوشنبه 10 آبان 1395, 23:33 عصر
از left outer join استفاده کن
باشد که رستگار شوی

http://www.w3schools.com/sql/sql_join_left.asp

فقط بجای false با null پر میشه که خودت باید زحمت هندل کردنشو بکشی

mostafa_tak2000
سه شنبه 11 آبان 1395, 09:21 صبح
سلام دوباره دوست عزیز :
من از Left Outer استفاده میکنم ولی وقتی میگم که IDHospital='1001 باشد فقط اتاقهایی را میاره که این بیمارستان داره و بقیه را که نداره نمیاره که مقدار False را نشان بده

mostafa_tak2000
سه شنبه 11 آبان 1395, 09:39 صبح
عزیز درست شد من شرط را با Where میدادم مشکل داشتم همون در ادامه ON با and دادم درست شد. با سپاس

kamranetemadi
پنج شنبه 13 آبان 1395, 01:10 صبح
همیشه موفق باشی