de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
 tedski
tedski
質問

交差テーブルに基づいて論理的にテンプレートを作成する

私はどのように質問を記述するか分からないが、私は関税に属性を付けるコードを提案しようとしている。私はOracleでこれをやっています。

私のデータベース構造は次のとおりです。

CODE (
    CODEID *PK NCHAR(10)
)

CODETARIFF (
    TARIFFNO NCHAR(15) *PK *FK
    CODEID NCHAR(10) *PK *FK
)

TARIFF (
    TARIFFNO NCHAR(15) *PK
)

だから私は論理的にどのコードを関税に割り当てるべきかのためのテンプレートを作ろうとしている。私は、「6つの関税もまた、これらの2つのコードが関連付けられている」という行に沿って何かを示すことを想像しています。

私はこれを試しましたが、それぞれのコードに対して返されるカウントは実際にテンプレートを表示していません。私が指定した2つのコードが表示されたときの発生率しか表示されません。

SELECT COUNT(*), CodeID
FROM CodeTariff
  INNER JOIN (
    SELECT TariffNo, COUNT(*) 
    FROM CodeTariff
    WHERE CodeID IN ('ABC', 'DEF') 
    GROUP BY TariffNo
    HAVING COUNT(*) > 1) SQ 
  ON CodeTariff.TariffNo = SQ.TariffNo 
WHERE CodeID NOT IN ('ABC', 'DEF')
GROUP BY CodeTariff.CodeID
ORDER BY COUNT(*) DESC;

これは混乱している場合はごめんなさい。

私もこれが可能かどうかはわかりませんが、私はこのような出力を探しています:

データ:     関税コード

TariffNo        CodeID

1111            ABC
1111            DEF
2222            ABC
2222            DEF
2222            GHI
2222            JKL
3333            ABC
3333            DEF
3333            GHI
3333            JKL

アウトプット:(関税1111が与えられたとき)

CodesToAdd      Count

GHI, JKL        2

私は次のように表示することができます:

他の2つの関税には、それらに関連するコードGHIとJKLがあります。これらのコードを関税1111に追加しますか?

0 2011-10-27T19:27:26+00:00 2
 tedski
tedski
編集された質問 27日 10月 2011 в 8:04
プログラミング
intersection
sql
oracle
Greg
27日 10月 2011 в 8:56
2011-10-27T20:56:50+00:00
さらに
ソース
編集
#56791958

これらの魔法を試してみてください:

SELECT     Code, COUNT(*) AS Count
FROM         (SELECT     dbo.TariffCode.Tariff, dbo.TariffCode.Code
                   FROM          dbo.TariffCode LEFT OUTER JOIN
                                              (SELECT     TariffCode_2.Tariff, TariffCode_2.Code
                                                FROM          dbo.TariffCode AS TariffCode_2 INNER JOIN
                                                                           (SELECT     Tariff, Code
                                                                             FROM          dbo.TariffCode AS TariffCode_1
                                                                             WHERE      (Tariff = '1111')) AS TariffsWithSharedCodes ON TariffCode_2.Code = TariffsWithSharedCodes.Code AND 
                                                                       TariffCode_2.Tariff <> '1111') AS MutualCodes ON dbo.TariffCode.Tariff = MutualCodes.Tariff AND 
                                          dbo.TariffCode.Code = MutualCodes.Code
                   WHERE      (MutualCodes.Code IS NULL) AND (dbo.TariffCode.Tariff <> '1111')) AS MissingCodes
GROUP BY Code
ORDER BY Count DESC, Code

これはT-SQLです。申し訳ありませんが、あなたはアイデアを得るでしょう

0
0
Jerry
28日 10月 2011 в 6:24
2011-10-28T06:24:17+00:00
さらに
ソース
編集
#56791959

以下のスクリプトがあなたを助けてくれることを願っています。 '1111 'だけでなく、すべての関税を得ることができます:

with temp as (
  select tariffno, tariffno2, codeid 
  from (
    select distinct c1.tariffno, c2.tariffno as tariffno2, c2.codeid
    from tariffcode c1
    join tariffcode c2 on c1.tariffno != c2.tariffno and c1.codeid != c2.codeid 
  ) c1 
  where 
    not exists (select 1 from tariffcode where tariffno = c1.tariffno and codeid = c1.codeid)
)
select tariffno, codeid, count(*) as cnt from temp group by tariffno, codeid;
0
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Денис Анненский
登録済み 1日前
2
365
登録済み 5日前
3
True Image
登録済み 6日前
4
archana agarwal
登録済み 1週間前
5
Maxim Zhilyaev
登録済み 1週間前
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属