مساله
این چالش از سه زیر مساله تشکیل شده
است که بعد از گذشت 3 روز در یک پست دیگر پاسخ ها را قرار میدهم. شما
میتوانید از طریق ایمیل جواب های مورد نظرتان را برام ارسال کنید تا در پست مربوط
به پاسخ ها همراه با نکاتی که ممکنه برای reform کردن راه
حل استفاده بشه به آنها اشاره کنم
ابتدا جداول زیر را ایجاد و داد های
نمونه را درج کنید:
CREATE
TABLE SupParts
(sno
CHAR(2)
NOT NULL,
--Supplier No
pno CHAR(2)
NOT NULL,
--Part No
PRIMARY
KEY (sno,
pno));
INSERT
INTO SupParts
(sno, pno)
VALUES
(1,
1),
(1, 2),
(1, 3),
(2,
1),
(2, 2),
(2, 3),
(3,
1),
(3, 2),
(3, 3),
(4,
1),
(4, 2),
(5,
2),
(5, 3),
(6,
1),
(6, 2),
(6, 3),
(6, 4),
(7,
1),
(7, 2)
;
CREATE
TABLE Goal
(pno
CHAR(2)
PRIMARY KEY,
cnt INT NOT
NULL
CHECK (cnt
> 0));
INSERT
Goal VALUES (1,
1),
(2, 1),
(3, 1),
(4, 1);
مساله 1:
نتیجه ی زیر خروجی مطلوب این مساله می
باشد:
sno sno
---- ----
1 2
1 3
2 3
4
7
به این معنا که
"زوج شماره تولید کنندگانی که دقیقا یک محصولات را تولید کرده اند"
راه حل بایستی از تکنیک الحاق سطرها ایجاد شده باشد آن هم
روش FOR XML PATH. چرا که روش های
دیگه پویایی ندارند.
مساله 2:
نتیجه ی مورد نظر و مطلوب این است:
sno_list pno_list
___________________
4 ,7 1 ,2
1 ,2 ,3 1 ,2 ,3
6 1 ,2 ,3 ,4
5 2 ,3
لیست افرادی که دقیقا یک محصول را
تولید کرده اند را انتخاب کرده و در ستون بعدی لیست محصولاتی که تولید کرده اند را
نشان دهید.
بطور نمونه تولید کننده های شماره 4 و 7 هر دو دو محصول 1 و 2 را تولید کرده اند و
تولید کنندی به غیر از شماره 5 وجود ندارد که دقیقا همان محصولات را تولید کرده
باشد.
این مساله هم دقیقا بایستی توسط روش قبلی یعنی الحاق توسط XML
صورت بگیرد.
مساله 3:
لیست افرادی (sno)
را بدست بیاورید که دقیقا تمام محصولات موجود در جدول Goal
را تولید کرده اند. و تعداد تولید هر محصول دقیقا باید برابر باشد با ستون
cnt مرتبط به آن محصول. راه حل شما باید این مساله را بررسی کنید.
البته با طراحی جدول امکان درج محصول برای یک فرد آن هم بیش از یک بار امکان پذیر
نیست (به کلید جدول توجه کنید).
بطور مثال در اینجا تولید کننده شماره
6 دقیقا تمام مقادیر موجود در جدول Goals را به همان تعداد
(یعنی 1 بار به ازای هر محصول) تولید کرده است. اگر همین تولید کننده محصولی با
شماره مثلا 8 نیز تولید کرده بود دیگر به عنوان جواب نبایستی انتخاب شود. یا اینکه
محصول شماره 1 را 4 بار تولید کرده بود باز هم نباید انتخاب می شد.
این راه حل هم باید از تکنیک الحاق
مساله را حل کند.