PDA

View Full Version : نمایش اطلاعاتی که در جدولی نباشد



majid_i68
پنج شنبه 17 مرداد 1392, 01:19 صبح
سلام
دوستان
عیدتون پیشاپیش مبارک
-------------------------------------
من 3 جدول دارم شامل ..جدول مشتری و جدول کتاب و جدول شفارش
book customer orders
میخوام تمامی مشتری و کتابهای که اسمشون توی جدول سفارش نیست ..رو به دست بیارم ..لطفا برام توضیحی دهد

m.webgard
پنج شنبه 17 مرداد 1392, 03:57 صبح
سلام
دوست عزیز میتونید با استفاده از عملگر EXCEPT تفاضل دو مجموعه رکورد رو بدست بیارید. مثلا تفاضل بین جدول مشتری و سفارش
موفق باشید

majid_i68
پنج شنبه 17 مرداد 1392, 07:43 صبح
چطور میشه این عملگر رو برای 3 جدول ایجاد گرد... مثل جدول مشتری و جدول کتاب رو تفاضلش رو به جدول شفارش نشون بده...

یا مثلا چطور میشه اطلاعات این دو جدول رو توی یک جدول موقت ریخت بعد جدول موقت رو تفاضلش رو با جدول شفارش انجام بدیم

محمد سلیم آبادی
پنج شنبه 17 مرداد 1392, 09:42 صبح
مگر جدول orders واسط بین مشتری و کتاب نیست؟ اگر این ارتباط شکسته بشه چه رابطه ای بین کتاب و مشتری خواهد ماند که شما آنها را میخواهید بدست بیارید؟
شاید منظورتون این هست که نتیجه در دو result set جدا یکی برای کتابهایی که سفارش داده نشدن و یکی برای مشتریانی که سفارش نداده اند؟

برای مورد دوم: راه های گوناگونی وجود داره که من برخی از اون ها را برای مساله یافتن مشتریانی که سفارش ندارند در اینجا قرار میدم از این راه حل ها میتونید برای بدست آوردن کتابهایی که هنوز سفارش داده نشدن نیز استفاده کنید. اگر نتیجه آن چیزی نیست که مد نظر شماست ساختار جدول همراه با چند نمونه داده و نتیجه مورد نظر همراه با توضیح در مورد منطقی که توسط آن خروجی بدست آمده در اینجا قرار بدین تا پاسخ دقیق داده شود.

روش اول OUTER JOIN
SELECT C.*
FROM Customers AS C
LEFT OUTER JOIN Orders O
ON C.customerID =O.customerID
WHERE O.customerID IS NULL

روش دوم NOT IN
SELECT *
FROM Customers C
WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders)

روش سوم EXCEPT
SELECT V.* FROM Customers AS V
INNER JOIN
(
SELECT CustomerID FROM Customers
EXCEPT
SELECT CustomerID FROM Orders GROUP BY CustomerID
)AS D
ON V.CustomerID = D.CustomerID
group by در کد فوق غیر الزامی است. برای درک بهتر من آن را آنجا قرار داده ام.