Oracle FROM句でOracle Formに使用している約5つのテーブルにリンクするOracle SQLクエリを作成しましたが、レコードは重複しているので、フォームには1行だけを表示し、重複するレコードは表示しません。私はGROUP BYとPARTITION BYステートメントを試しましたが、ステートメントにこれを追加すると、クエリが遅くなります。Oracle SQLはOracleフォーム10gに重複を戻さない
私は今これを手続きとして考えていて、重複があればそれを戻します。データベースからORACLEレコードの表をフォームに戻すのが最善でしょうか?どのようにOracle PL/SQLループで重複を探すのがベストでしょうか?
私は質問を更新し、以下の完全な質問を参考にしてよりよく説明しました。下のSELECT文の最初の列であるsurr_idは一意ですが、Oracle形式で表示したいのは、一意ではない他の列とともに製造番号です。生産数の重複があり、場合によっては3つの製造番号レコードも同じことがあります。お役に立てれば。私はこれをループに入れて最初の生産番号を取得し、生産番号が変わったときに各レコードを取り戻すことを考えていました。
select x.surr_id ,
x.supplier_name as supplier ,
x.broadcaster_name as broadcaster ,
ptle.title as production_title ,
x.production_number as production_number ,
stle.title as series_title ,
x.production_source as supplied_source_ind ,
x.third_party_group_id ,
x.bro_broadcast_by_tp_surr_id ,
x.station_id from (select usage_headers.surr_id as surr_id ,
broad_supp.supplier_name as supplier_name ,
broad_supp.broadcaster_name as broadcaster_name ,
usage_headers.production_number as production_number ,
productions.production_source as production_source ,
broad_supp.station_id as station_id ,
usage_headers.prod_exploitation_cre_surr_id as prod_exploitation_cre_surr_id ,
usage_headers.bro_broadcast_by_tp_surr_id as bro_broadcast_by_tp_surr_id ,
productions.cre_surr_id as cre_surr_id ,
productions.prod_series_cre_surr_id as prod_series_cre_surr_id ,
broad_supp.third_party_group_id as third_party_group_id
from usage_headers, productions, (SELECT /*+ index (bro bro_pk) */
third_party.surr_id AS THIRD_PARTY_SURR_ID,
third_party.supplier_group_id AS THIRD_PARTY_GROUP_ID,
third_party.dn_root_tp_surr_id AS THIRD_PARTY_ROOT_ID,
third_party.supplier_name, bro.station_id AS STATION_ID,
bro.dn_tp_name AS BROADCASTER_NAME FROM (SELECT tp.surr_id,
tp.name AS supplier_name,
tp.tp_surr_id AS supplier_group_id,
tp.dn_root_tp_surr_id FROM third_parties tp
CONNECT BY PRIOR tp.surr_id = tp.tp_surr_id
START WITH tp.surr_id IN (4251, 4247, 4237, 4034, 10157, 14362, 9834)) third_party
JOIN broadcasters bro ON (third_party.surr_id = bro.tp_surr_id)) broad_supp
where broad_supp.THIRD_PARTY_SURR_ID = usage_headers.bro_broadcast_by_tp_surr_id
AND usage_headers.prod_exploitation_cre_surr_id = productions.cre_surr_id
and usage_headers.prod_exploitation_cre_surr_id IS NOT NULL
and usage_headers.right_type in ('M','B')
AND usage_headers.udg_surr_id IS NOT NULL
AND NVL(usage_headers.dn_uls_usage_status,'3') NOT IN ('9', '11')
AND productions.production_source <> 'AP') x
LEFT OUTER JOIN titles ptle ON (ptle.cre_surr_id = x.cre_surr_id AND ptle.tt_code = 'R')
LEFT OUTER JOIN titles stle ON (stle.cre_surr_id = x.prod_series_cre_surr_id AND stle.tt_code = 'R')
アドバンス
結果セットの行全体が複製されている場合は、「distinct」を使用できますが、それはクエリまたはデータに問題を示唆するかもしれません...いくつかの列が重複している場合には、維持し、おそらく集約する。あなたはすでにそれを試したようです。現在、最初の行セットを取得していない場合を除き、グループ化はそれほど遅くならないはずです。 –
ユーザーインターフェイスではなくクエリを修正する必要があります。 –
こんにちはGuys、クエリのデータはユニークですが、私はフォームに戻って、私はちょうど生産と駅が表示されますが、フォームのユニークなID、prododuction、駅が重複することがあります。 –