我使用T-SQL数据库中的帐户,这些帐户具有分布在多个表中的属性。可以为每个帐户分配代码,具体取决于该帐户的属性是否与代码所需的属性匹配。我正在尝试开发一个可以获取给定帐户和给定代码的查询,确定它们是否兼容,并返回匹配且不匹配的值。让我举个例子。
说我们有以下内容:
Table Person
(
UniqueID
, FirstName
, LastName
, FK_EyeColor
, FK_HairColor
, FK_Age
)
Table EyeColor
(
PK_EyeColor
, EyeColor
)
Table HairColor
(
PK_HairColor
, HairColor
)
Table Age
(
PK_Age
, Age
)
具有以下属性的人:
UniqueID = 1
FirstName = 'John'
LastName = 'Doe'
FK_EyeColor = 3 -- Brown eyes
FK_HairColor = 4 -- Black hair
PK_Age = 19 -- 19 y/o
现在,让我们说我有一个类别代码,分配给棕色眼睛和棕色头发的人:
Table Categories
(
PK_Categories
, CategoryName
, FK_EyeColor
, FK_HairColor
)
我想要做的是指定一个人和一个类别,并确定该人是否符合该类别。理想情况下,它会返回类似的内容:
Person.UniqueID | FK_EyeColor | FK_HairColor | Qualifies for "Brown" category
1 | 3 | 4 | No
2 | 3 | 3 | Yes
比较这些表值的有效方法是什么?我很难为编码组件提出一个好的攻击计划。
答案 0 :(得分:0)
我认为你可以像这样用SQL做到这一点:
select
p.UniqueID,
p.FK_EyeColor,
p.FK_HairColor,
case
when c.CategoryName = 'brown'
then 'Yes'
else 'No'
end as Brown_category
from person as p
left outer join categories as c
on p.FK_HairColor = c.FK_HairColor
and p.FK_EyeColor = c.FK_EyeColor
where c.CategoryName is not null
我在这里写了一个工作小提琴:http://sqlfiddle.com/#!3/3531d/1