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>

同じ "RaumName" で異なる "Raumattribute" を持つ 2 つの結果が得られることがわかります。私はこのような出力が欲しい:

<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 に答える