0

重複した行を含む結果セットがあります。ただし、1 つの列からのみ重複を削除する必要があります。他の列には重複が必要です。

Table1 : productcode,productname
Table2 : A_itemcode ,A_itemname
Table3 : B_itemcode,b_itemname
Table4 : c_itemcode,c_itemname

table2、table3、table4 の値は table1 に基づいています。table2 の値を取得できる可能性があるのは 2 行ですが、テーブル table3 の戻り値は 5 行、table4 の戻り値は 8 行になる場合があります。

私はこれらのテーブルに参加したからです。だから明らかに私は複数の行を取得します.今、私は個別に表示したいが、重複した値はありません.つまり、製品コードは重複している可能性がありますが、アイテムコードは重複している必要があります.

ここで itemcode は一意である必要がありますが、Java の 1 つの列で重複を削除するにはどうすればよいですか?

4

1 に答える 1

0

この種のことは、Java ではなく SQL で行われます。

しかし、あなたはあなたが望むものを定義していません。各 itemcode を 1 回だけ表示したい場合は、itemcode でグループ化することでそれを行うことができます。次に、アイテムコードごとに取得するレコードのグループをどうするかを決定する必要があります。これを「集約」と呼びます。たとえば、これらの各フィールドの最大値を確認したい場合があります (データベースが使用している照合順序でソートされています)。

SELECT itemcode, 
MAX(itemname), 
MAX(productcode), 
MAX(productname)
FROM table1
GROUP BY itemcode
ORDER BY itemcode

または、次の 4 つのフィールドの一意の組み合わせのすべてのリストを表示することに興味があるかもしれません。

SELECT itemcode, 
itemname, 
productcode, 
productname
FROM table1
GROUP BY itemcode, itemname, productcode, productname
ORDER BY itemcode, productcode

もちろん、これはアイテムコード 123 が 2 回表示される可能性が非常に高いことを意味します。

それはすべて、あなたが探しているものに依存します。より良い支援が必要な場合は、どれを理解し、説明する必要があります。必要な出力のリストとともに、テーブル構造といくつかのサンプル データを示すことができれば簡単です。

アップデート

更新された質問に基づいて、4 つのテーブルで複数の一致を提供する単一の「コード」に参加していると思いますが、各テーブルでそのコードに関連付けられた一意の「名前」を確認したいと考えています。それは次のようなものを必要とします:

SELECT productcode, 
 productname, 
 A_itemname, 
 B_itemname, 
 C_itemname
FROM Table1
JOIN Table2 ON A_itemcode = productcode
JOIN Table3 ON B_itemcode = productcode
JOIN Table4 ON C_itemcode = productcode
GROUP BY productcode, 
 productname, 
 A_itemname, 
 B_itemname, 
 C_itemname

これがあなたが考えていたものではない場合は、もう一度説明してみてください。

繰り返しますが、これは Java ではなく SQL で行います。

于 2013-05-23T18:06:52.427 に答える