0

可能重复:
使用 INNER JOIN 时出现意外的数据库输出

你好我有一个这样的sql查询:

SELECT DISTINCT r.BEZEICHNUNG AS BEZEICHNUNG, r.ID AS ID, ra.BEZEICHNUNG AS raumBEZEICHNUNG, ra.ID AS raumID 
FROM RAZUORDNUNG rz 
right join RAUMATTRIBUTE ra ON rz.RAUMATTRIBUTE_ID = ra.ID 
right join RAUM r ON rz.RAUM_ID = r.ID
WHERE ....

我将结果写在一个列表中:

strasseObject.Add(new RAUM()
                      {
                          RaumName = rdr["BEZEICHNUNG"].ToString(),
                          RaumID = rdr["ID"].ToString(),
                          RaumAttribute = rdr["raumBEZEICHNUNG"].ToString(),
                          RaumAttributeID = rdr["raumID"].ToString()
                      });

输出看起来像这样

<RAUM>
<RaumName>Small Business Room</RaumName>
<RaumID>219</RaumID>
<RaumAttribute>A7OVERHEAD</RaumAttribute>
<RaumAttributeID>168876</RaumAttributeID>
</RAUM>
<RAUM>
<RaumName>Small Business Room</RaumName>
<RaumID>219</RaumID>
<RaumAttribute>Beamer</RaumAttribute>
<RaumAttributeID>168847</RaumAttributeID>
</RAUM>
</ArrayOfRAUM>

您可以看到我得到 2 个具有相同“RaumName”但具有不同“Raumattribute”的结果。我想要这样的输出:

<RAUM>
<RaumName>Small Business Room</RaumName>
<RaumID>219</RaumID>
<RaumAttribute>A7OVERHEAD</RaumAttribute>
<RaumAttributeID>168876</RaumAttributeID>
<RaumAttribute>Beamer</RaumAttribute>
<RaumAttributeID>168847</RaumAttributeID>
</RAUM>
</ArrayOfRAUM>

提前致谢

4

2 回答 2

0

您是否尝试在另一端开始查询(从 raum 中选择)?

SELECT DISTINCT r.BEZEICHNUNG AS BEZEICHNUNG, r.ID AS ID, ra.BEZEICHNUNG AS raumBEZEICHNUNG, ra.ID AS raumID
FROM RAUM r
right join RAZUORDNUNG rz ON rz.RAUM_ID = r.ID
right join RAUMATTRIBUTE ra ON rz.RAUMATTRIBUTE_ID = ra.ID
WHERE ....
于 2012-06-20T09:33:42.980 回答
0

从查询中删除rz.RAUMATTRIBUTE_ID列,然后运行.... 像

SELECT DISTINCT r.BEZEICHNUNG AS BEZEICHNUNG, r.ID AS ID, ra.BEZEICHNUNG AS raumBEZEICHNUNG, ra.ID AS raumID 
FROM RAZUORDNUNG rz 
right join RAUMATTRIBUTE ra ON rz.RAUMATTRIBUTE_ID = ra.ID 
right join RAUM r ON rz.RAUM_ID = r.ID
WHERE ....

Distinct:关键字DISTINCT可用于仅返回不同(不同)的值。因此, RAUMATTRIBUTE_ID 具有不同的值,这就是它返回 2 行的原因。

于 2012-06-20T09:44:00.623 回答