PDA

View Full Version : سوال: مشكل با يك كوئري (لطفا ببينيد)(كمــــــك)



Ali_Abban
پنج شنبه 07 شهریور 1387, 14:18 عصر
سلام دوستان،

اگه بخوام به طور خيلي ساده بگم، اينه كه فرض كنيد يه جدول دارم كه توي اون يكسري محصولات با تعدادشون نگهداري مي شن.(مثلا تلويزيون سوني 3 دستگاه، ضبط سوني 5 دستگاه ). حالا يه جدول ديگه هم دارم كه توش سفارش هايي كه براي خريد محصول دادم ذخيره مي شه.(مثلا فرض كنيد سفارش دادم كه تلويزيون سوني 6 دستگاه).
حالا مشكلي كه دارم اينه كه يك كوئري مي خوام كه مقدار اين دوتا جدول رو در كنار هم قرار بده.
مثلا نشون بده كه تلويزيون سوني موجود 3 دستگاه، تلويزيون سوني سفارش داده شده 6 دستگاه و مجموع 9 دستگاه.
و در يك سطر ديگر نشان دهد كه ضبط سوني موجود 5 دستگاه، ضبط سوني سفارش داده شده 0 دستگاه و مجموع 5 دستگاه.
كوئري كه مي نويسم ركوردهايي كه در جدول موجودي، وجود دارند و در جدول سفارش، هيچ سفارشي ندارند را نمايش نمي دهد.(ولي من مي خوام نمايش دهد با مقدار صفر).
البته اگر هنگام ثبت موجودي اون رو با تعداد صفر به جدول سفارش ها اضافه كنم درست مي شه، اما نبايد چنين كاري كنم.
نمي دونم واضح گفتم يا نه. به طور كلي دو تا جدول رو كنار هم قرار بده و براي ركوردهايي كه فقط در يكي از جدول ها موجودند، در جدول ديگر صفر را قرار دهد.


خيلي ممنون مي شم اگه كمك كنيد.

رضا جاسبی
پنج شنبه 07 شهریور 1387, 21:03 عصر
به جای Inner Join از Outer Join استفاده کن.
همین مساله رو در مورد اونهایی که موجودی ندارند اما سفارش داری هم ممکنه داشته باشی. یعنی جنسی تاکنون در انبار یا فروشگاه نیست اما سفارش دادی.
البته من ترجیح می دم طراحی به صورتی باشه که لیست اجناس کامل در یک جدول دیگه باشه اما همینطوری هم که شما گفتی میشه:


Select Goods.ID , Goods.Name , Goods.Numbers ,
case when Order.Numbers is null then 0 else Order.Numbers end
from Goods Left Outer Join Orders On Good.ID= Orders.ID

و اگر همانطور که گفتم ممکنه مشکل نبودن جنس با وجود بودن سفارش هم داشته باشی به جای Left Outer Join از Full Outer Join استفاده کن.