组合对象和属性



我有3张表

第一个表名:Objects

<表类> ID 名称 tbody><<tr>1艾哈迈德2哈桑

从具有您想要的最终结果的行表开始,即Objects(尽管我强烈建议不要将其用作用户表名,因为它也是系统表名)。

然后加入你需要的其他栏目的信息。

我强烈建议使用表别名,使您的查询更容易阅读和理解。

select [Name], E.[Value] EyeColor, H.[Value] Height
from dbo.[Objects] O
inner join dbo.[Data] H on H.ObjectID = O.id
and H.PropertyID = (select P.id from dbo.Properties P where P.[Name] = 'Height')
inner join dbo.[Data] E on E.ObjectID = O.id
and E.PropertyID = (select P.id from dbo.Properties P where P.[Name] = 'EyeColor');

我将帮助你找出如何解决这个问题,但你需要看到一个SQL教程,

首先,你需要在O/p中为这个人同时选择EyeColorHeight,那么你怎么知道这个值是针对你需要检查的特定的人的呢?

它将是一个像这样的查询:

SELECT Objects.Name AS NAME, EyeColor.Value AS EyeColor, Height.Value AS Height  
FROM Objects AS Obj  
INNER JOIN Data AS EyeColor ON EyeColor.ObjectID = Obj.ID  
AND EyeColor.PropertyID = 1  
INNER JOIN Data AS Height ON Height.ObjectID = Obj.ID  
AND Height.PropertyID = 2;

你需要测试并修改它。

请注意:有很多其他的解决方案,所以总是尝试弄清楚你想要什么,然后开始划分问题,然后尝试开始写你的查询。

查看@Dale K的解决方案,因为它可以帮助你很多。

最新更新