en-UShe-IL
You are here:  Blog > new Forums FAQ > Forums FAQ 351
Register   |  Login

השאלה

נתונה רשימה של מאפיינים (PropertiesId) למשל 1,3,6

א. אנו רוצים לקבל את כל המשתמשים שמוגדר להם לפחות מאפיין אחד מהרשימה. 

ב. אנו רוצים לקבל את כל המשתמשים שמוגדרים להם כל המאפיינים מהרשימה שלנו

מבנה האלמנטים במסד הנתונים DDL:

/************************************************ DDL */
 
CREATE TABLE [dbo].[Zimmers](
[UserId] [int] IDENTITY(1,1) NOT NULL,
[UserName] [nvarchar](150) NOT NULL,
)
 
CREATE TABLE [dbo].[UserProperty](
[PropertyId] [int] IDENTITY(1,1) NOT NULL,
[PropertyName] [nvarchar](100) NULL,
[CategoryId] [int] NULL,
)
 
CREATE TABLE [dbo].[UserProperties](
[UserId] [int] NOT NULL,
[PropertyId] [int] NOT NULL
)
 
-- השאילתות לא מראות שום קשר בין הטבלאות
-- מאוד מומלץ לקשר טבלאות ברמת מסד הנתונים ולא רק ברמת האפליקציה חיצונית

הכנסת נתונים לדוגמה DML:

/************************************************ DML */
 
insert [Zimmers] ([UserName]) values ('a')
insert [Zimmers] ([UserName]) values ('s')
insert [Zimmers] ([UserName]) values ('d')
insert [Zimmers] ([UserName]) values ('f')
insert [Zimmers] ([UserName]) values ('g')
insert [Zimmers] ([UserName]) values ('h')
insert [Zimmers] ([UserName]) values ('j')
insert [Zimmers] ([UserName]) values ('k')
insert [Zimmers] ([UserName]) values ('e')
select * from [Zimmers]
 
insert [UserProperty] ([PropertyName],[CategoryId]) values ('ש',2)
insert [UserProperty] ([PropertyName],[CategoryId]) values ('ד',3)
insert [UserProperty] ([PropertyName],[CategoryId]) values ('ג',6)
insert [UserProperty] ([PropertyName],[CategoryId]) values ('כ',2)
insert [UserProperty] ([PropertyName],[CategoryId]) values ('ע',2)
insert [UserProperty] ([PropertyName],[CategoryId]) values ('י',5)
insert [UserProperty] ([PropertyName],[CategoryId]) values ('ח',6)
insert [UserProperty] ([PropertyName],[CategoryId]) values ('ל',6)
select * from  [UserProperty]
 
insert [UserProperties] ([UserId],[PropertyId]) values (1,1)
insert [UserProperties] ([UserId],[PropertyId]) values (1,3)
insert [UserProperties] ([UserId],[PropertyId]) values (1,6)
insert [UserProperties] ([UserId],[PropertyId]) values (2,6)
insert [UserProperties] ([UserId],[PropertyId]) values (7,2)
insert [UserProperties] ([UserId],[PropertyId]) values (5,4)
insert [UserProperties] ([UserId],[PropertyId]) values (4,7)
select * from [UserProperties]

נתונים שרוצים לקבל:

א. ניתן לראות בטבלה הקשר בין המאפיינים למשתמשים שרק למשתמש 1 ולמשתמש 2 לפחות אחת מהתכונות של המאפיינים ולכן נרצה לקבל:

1   a
2   s

ב. מבין המשתמשים שקיבלתנו בחלק א למשתמש 2 היתה אומנת תכונה מספר 6 אבל לא היו לו את תכונות 1 או 3. לעומת זאת למשתמש 1 היו את כל התכונות שאנו מחפשים ולכן בפתרון סעיף ב אנו רוצים לקבל את התוצאה:

1   a

Maximize פתרון לדוגמה