MYSQLについてお教えください。

THIS_TABLE_AとTHIS_TABLE_Bの2つのテーブルがあります。

THIS_TABLE_Aのフィールドには、CODEがあります。
THIS_TABLE_Bのフィールドにも、CODEがあります。

THIS_TABLE_AのCODEは5桁で表示されています。
例)ABCED,AKDIL,IETKL

THIS_TABLE_BのCODEは8桁で表示されています。
例)000ABCED,000AKDIL,000IETKL

THIS_TABLE_BはTHIS_TABLE_Aとほぼ同じですが、ゼロが頭に3つ
ついています。

THIS_TABLE_AとTHIS_TABLE_Bを結合させたいのですが、1回で
結合させる方法はあるでしょうか?

テンポラリーのテーブルをつくって、そこでTHIS_TABLE_AのCODEの値を
lpad関数をもちい、8桁にしたのち、テンポラリーテーブルと
THIS_TABLE_Bと結合させればできるのはわかりますが、
1回でできるのかなと思い質問させて頂きました。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

インデックスを利かせた処理がしたいなら、書式が違うフィールドで


結合させるのは得策ではないでしょう。
あらためてAかBのどちらかに同じ書式になるようなフィールドをつくっておき
インデックス設定しておいた方がよいと思います。

遅くてもいいならなんとでもなるでしょう
たとえばこんな感じでも

SELECT *
FROM THIS_TABLE_A AS A
INNER JOIN THIS_TABLE_B AS B
ON lpad(A.code,8,'0') = B.code
    • good
    • 0
この回答へのお礼

解決できました!ありがとうございます!

お礼日時:2011/04/13 19:23

yambejpさんの



SELECT *
FROM THIS_TABLE_A AS A
INNER JOIN THIS_TABLE_B AS B
ON lpad(A.code,8,'0') = B.code

・THIS_TABLE_Aの件数が少ない
・THIS_TABLE_Bのcodeに索引がある
場合ならそれなりのレスポンスが出ると思います。

私の例示のやり方は逆に
・THIS_TABLE_Bの件数が少ない
・THIS_TABLE_Aのcodeに索引がある
ことが望ましいです。
    • good
    • 0
この回答へのお礼

解決できました!ありがとうございます!

お礼日時:2011/04/13 19:23

項目長が必ず8桁ならばRIGHT関数を使ってみては


RIGHT(THIS_TABLE_B.ODE,5)。
    • good
    • 0
この回答へのお礼

解決できました!ありがとうございます!

お礼日時:2011/04/13 19:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報