2

私の質問は、hql クエリの後に「重複レコードを返す」を解決する方法についてです。例を次に示します。

SELECT t0 FROM table0 t0, table1 t1, table2 t2 WHERE 

(((t0.a = 1 AND t0.b = 2 AND t0.c = 3) AND (t1.a = 4 AND t1.b = 5 AND t1.c = 6)) 

OR 

((t0.a = 7 AND t0.b = 8 AND t0.c = 9) AND (t1.a = 10 AND t1.b = 11 AND t1.c = 12) AND (t2.a = 13 AND t2.b = 14 AND t2.c = 15))

このクエリはレコードを正しく返しますが、一部のレコードは複数回返されます。そして、私はその理由を知っていると思います。「table2 t2」は、「OR」の前の条件 (「WHERE」と「OR」の間) で使用されていません。レコードの重複を避けるにはどうすればよいですか?

ありがとうございました

4

1 に答える 1

0

貼り付けたのが SQL 出力 (HQL ではない) である場合、問題は、このステートメントがテーブルを適切に結合していないことです。

私はテーブルを期待しt0、相互に何らかの関係を持ち、クエリに含まれている必要があります。これが欠落しているため、結果の重複が予想されます。t1t2WHERE t0.foo = t1.bar AND t1.baz=t2.bah

于 2012-11-26T10:22:52.843 に答える