2012-02-10 6 views
0

いくつかの繰り返し値を持つテーブルから一意の結果を返す問題があります。次のように私が使用しているテーブルがある:テーブルの列の特定の組み合わせに基づいてユニークな結果を得るには?

Venue ID | Venue | Venue Phone | Venue Address| 
10659  Ottawa 
10587  Toronto 
10967  Ottawa 
10492  Hamilton 
10595  Hamilton 

私は(私は私だけでは、Oracle Apexの中の値の一覧で作業するように2つのカラムを使用することができます)、適切な会場名を表示しますが、会場のIDを返す必要があります。問題は、会場名は繰り返すことができますが、会場IDはいつも一意です。だから私が他のリストのために使っていたクエリを使って、私は重複した会場名で終わるでしょう。私が欲しいものを達成することができる質問はありますか?

+1

例えば、Windowsの機能を使用することができます。たとえば、2つの異なる「オトワ」会場がある場合、ユーザーが値リストからどのように「オトワ」を望んでいるかを知ることができますか?文字列を一意にするために他のデータを追加することもできますが、ユーザーに意味のある追加データがあれば、会場を一意に識別できるようにする必要があります。 –

+0

会場IDがある限り、どの会場が選択されても問題ありません。だから、たとえ2つのオタワがあったとしても、これまで使用されていたのは、選択リストに理想的に現れるものだけでした。理想的ではありませんが、残念ながらDBを変更することはできません。 – user1200142

答えて

1

あなたはIDのが選ばれている会場のどの気にしない場合は、単純GROUP BYを行うと、より大きなVENUE_ID

SELECT max(venue_id) venue_id, venue venue_name 
    FROM table_name 
GROUP BY venue 
+0

私はそれを考えなかった理由は分かりません!それは完全に機能します。ありがとう、ありがとう! – user1200142

0
SELECT MIN(ID), VENUE 
FROM <table> 
GROUP BY VENUE 

でものを選ぶことができ...

あなたを与えるだろう
Venue ID | Venue | More columns 
10659  Ottawa 
10587  Toronto 
10967  Ottawa 
10492  Hamilton 

これが後になっているかどうかわかりませんか?

+0

Justinが投稿したものの最大値の点では反対ですが、同じアイデアなので、これはまあまあうまくいっていると思います。 – user1200142

+0

MINを使用すると、同じ会場で別の行を後で追加すると、同じIDを参照し続ける(列がNUMBER列であると仮定して) – cagcowboy

1

また、あなたは、値のリストに表示したいだろうか

SELECT * 
    FROM (
     SELECT venue_id, 
       venue 
       --other fields 
       ROW_NUMBER() OVER (ORDER BY venue_id PARTITION BY venue) AS num 
      FROM table_name 
     )a 
WHERE num=1 
関連する問題