postgresql 暗号化されたカラムをjoinしたいができない

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,133

amaguri

score 217

byte a型で暗号化された
card_noというカラムがあり

データとして
dataテーブル

カラム
card_no         rank   ymd
暗号化された1923   1     2017-01-23
暗号化された1923   5     216-03-01


というデータを

card_no     rank     ymd    flg  rank     ymd     flg
1923      1      2017-01-23    0    5   2016-03-01 1


という風につくりたいのですがうまくいきません。

現在のCode

select
    pgp_sym_decrypt(t3.card_no,pass) as card_no
    t3.rank,
    t3.ymd,
    t6.rank,
    t6.rank
from
    (select 
      t1.*
     from
      data t1 join
      (select
          pgp_sym_decrypt(card_no,pass) as b_card_no,
          max(ymd)
       from 
          data
       where 
          flg='0' group by 1
      )t2
      on pgp_sym_decrypt(t1.card_no,pass)=b_card_no
      and
      t1.ymd=t2.ymd and flg="0"
  )t3
left join
    (select
        t5.*
     from 
        data t5 join
        (select
             pgp_sym_decrypt(card_no,pass) as c_card_no,
             min(ymd) ymd  
         from
            data
         where
            flg='1'
          and
            ymd>=2015_01_01
            group by 1
         )t4
         on pgp_sym_decrypt(t5.card_no,pass)=c_card_no
         and
         t5.ymd=t4.ymd and t5.flg='1'
    )t6
    on pgp_sym_decrypt(t3.card_no,pass)=pgp_sym_decrypt(t6.card_no,pass)

最後のonの部分がうまくいかずjoinできてない気がしますが、、、
何が原因でしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • sleepsheep

    2017/01/23 22:33

    「うまくいきません。」とは、どのようにうまくいかないのでしょうか。SQLエラーが発生するのであれば、そのエラーを追記してください。何か結果が返ってくるのであれば、その結果をお願いします。

    キャンセル

  • Yuna.S

    2017/02/23 17:04

    (1ヶ月前の記事ですがもし見ていたら…) ①pgp_sym_decrypt関数に渡すpassは、dataテーブルに持つカラムでしょうか。rank=1と5のpassは異なるのですか?②pgp_sym_decrypt関数でcard_noを復元して、同じ値になることは確認したのでしょうか?

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る