• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MYSQLで結合させたい(ちょっと特殊))

MYSQLで結合させたい(ちょっと特殊)

このQ&Aのポイント
  • MYSQLでTHIS_TABLE_AとTHIS_TABLE_Bを1回で結合させる方法についてお教えください。
  • THIS_TABLE_AとTHIS_TABLE_BはフィールドのCODEが異なるため、結合には一工夫が必要です。
  • テンポラリーテーブルとlpad関数を使って、THIS_TABLE_AのCODEを8桁にしてから結合させる方法があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

インデックスを利かせた処理がしたいなら、書式が違うフィールドで 結合させるのは得策ではないでしょう。 あらためてAかBのどちらかに同じ書式になるようなフィールドをつくっておき インデックス設定しておいた方がよいと思います。 遅くてもいいならなんとでもなるでしょう たとえばこんな感じでも SELECT * FROM THIS_TABLE_A AS A INNER JOIN THIS_TABLE_B AS B ON lpad(A.code,8,'0') = B.code

mellow91
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

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に索引がある ことが望ましいです。

mellow91
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

項目長が必ず8桁ならばRIGHT関数を使ってみては RIGHT(THIS_TABLE_B.ODE,5)。

mellow91
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • accessフィールドの複数結合

    テーブルAの1つのフィールドとテーブルB内の複数のフィールドを結合させたい。例 テーブルAには社員コードと社員名、テーブルBには商品名、納入社員コード、商品管理社員コード。テーブルAの社員コードフィールドとテーブルBの2つの社員コードフィールドを結合させたいのです。テーブルAをコピーして2つ作り、それぞれをBの2つのフィールドと結合すると出来るのですが、テーブルAが社員名でなく、画像だったりするととても大きなファイルサイズになってしまいます。お答えお待ちしています。

  • ACCESS2003クエリの結合した表示形式が

    ACCESS2003でクエリを作成しました。各テーブルのフィールドを結合したのですが 表示形式が思ったようになりませんでした。 【Aテーブル】 フィールド:学部NO データ型:数値型 書式:00 【Bテーブル】 フィールド:学科NO データ型:数値型 書式:00 【ABクエリ】 フィールド:学籍NO:[Aテーブル]![学部NO]&[Bテーブル]![学科NO] 【ABクエリ】の結果が数字が4桁表示されません。 (例) 0101 と表示してほしいのですが、   11  と表示されます。 各テーブルでは、01と表示されるのですが・・・。 宜しくお願いします。

  • テーブルの結合について

    テーブル結合に関するSQL文について質問させてもらいます。 DBはSQLServer2005です。 下記のような二つのテーブルがあります。 テーブルA コード A111 A111B A222 A333 テーブルB コード    数量  A111     1 A111B    2 A222     3 A222B    4 上記2つのテーブルから下記の結果を表示させたいのです。 コード    数量  A111     1 A111B    2 A222     7 A333     0 テーブルBのコードがテーブルAにある場合、そのまま数量を表示。 ない場合、コードの4桁目まででサマリした合計値を表示させたい。 LEFT JOIN等をいろいろためしてみたのですがうまくいきません。 おわかりの方、方教えてください。    

  • テーブルとテーブルを結合したい

    同じフィールドを持つテーブル同士のデータを結合して、別のテーブル又はクエリに表示させたいのですが、こんなことできますか?できるとすればどうすればよいのですか? 例:テーブルAの商品フィールドのデータとテーブルBの商品フィールドのデータを一つにまとめてテーブルC又はクエリCに表示させたい。

  • ACCESSの結合

    よろしくお願いします。 ACCESS2000で、AテーブルのA'フィールドとBテーブルのB’フィールドを結合させ、同一でないものを表示させる(クエリーで)方法を教えてください。 よろしく、お願いいたします。

  • テーブル結合で、結合フィールドをWHERE句に用いた時に、結合フィールドのデータがNULLになってしまう。

    MySQL 4.0.24-standard + PHP Version 4.3.11 を使用しています。 下記のような table_a, table_b があり、idフィールドで外部結合させています。 table_a id|value ------- 1 | 0 2 | 1 table_b id|name ------- 1 | A 2 | B SELECT * FROM table_a NATURAL LEFT OUTER JOIN table_b; result id|value|name -------------- 1 | 0 | A 2 | 1 | B しかし、下記のクエリでは、このようにidがNULLになってしまいます。 SELECT * FROM table_a NATURAL LEFT OUTER JOIN table_b WHERE table_a.id = 1; result id |value|name -------------- NULL| 0 | A 以下のような結果を得たいのですが、どうすれば良いのでしょうか? result id|value|name -------------- 1 | 0 | A

    • ベストアンサー
    • MySQL
  • MySQLテーブルの結合

    MySQLテーブルの結合 select フィール名(field1,field2,field3)from xテーブル名 [inner/left/right] join yテーブル名 on 結合条件 解説書には説明されています 現在自分のデータベースは ahogedb(テーブル名) no hoge1 hoge2 bhogedb(テーブル名) no ahogeno(ahogedbのnoを登録) hoge3 ahogedbを表示してbhogedbでの訪問回数を表示させたいのです bhogedbのahogenoにはahogedbのnoが逐次登録されています 表示はno,hoge1,hoge2に追加したahogenoのカウント数 select文の式の書き方を出来れば1列にして教えてください ahogenoは別名の変数処理するのでしょうか

    • ベストアンサー
    • MySQL
  • 結合して余りを抽出したい

    こんにちは。SQL文についてお教えください。 TABLE AとTABLE Bがあります。両テーブルにはIDというフィールドがあります。 データは下記のように入っているとします。 TABLE A ID:1,2,3,4,5 TABLE B ID:1,2,3 SQL文を実行した時、4,5を抽出したい。 二つのテーブルを比べ、片方のテーブルにないものを抽出したいと思っています。 つまり、TABLE A - TABLE Bを行い、余ったIDのみを抽出したいと思います。 内部結合は理解したのですが、これではできません。どうすれば解決できるのかお教え頂けませんでしょうか? よろしくお願い致します。

  • 3つ以上のテーブルの結合に関して

    いろいろな書籍を見ながら試してみましたが どうも求めている結果が得られませんでした… ヒントでも構いませんのでアドバイスお願いします。 テーブルの仕様 ■テーブル1■ 店舗コード 日付 フィールド1n フィールド2n フィールド3n フィールド4n ■テーブル2■ 店舗コード 日付 フィールド5 ■テーブル3■ 店舗コード 日付 フィールド6 2つのテーブルの内部結合や外部結合のSQL文は確認できましたが 3つ以上の記述がテキストにありませんでした。 ※もしかしたら2つのテーブルを結合してからかと思いましたが 具体的な方法が思い浮かびませんでした。 オラクルは9g SQL*PLUS ■その他の条件■ すべてのフィールドが例えNULLでも店舗コードと日付 は表示されるようにする。 INを使用して抽出したい店舗コードのみを表示させたい。 (その場合並び替え順を指定したい場合はINのあとで順番を指定すれば よろしいでしょうか?) フィールド1~4までの「n」は同じ種類のフィールドですが区分が10ずつ あり算術演算子で合計を求めた値のみを表示させます。 そのためASを使用してフィールド名を短くしたいと考えています。 店舗コードと日付は3つのテーブルに共通してありますが 結合した場合は1つづつの表示にしたいです。 大変申し訳ございませんが 宜しくお願いします。

  • SQLでテーブル結合時にIndexScanが発生

    タイトルどおりなのですが、 テーブルAとテーブルBを外部結合するとテーブルBにIndexScanが発生してします。 例) SELECT A.Field1, A.Field2, B.Field4 FROM A LEFT JOIN B ON A.Field1 = B.Field3 WHERE A.Field2 = 'TestText' A.Field1 主キー B.Field3 主キー 結合時のキーを主キーにしてもIndexScanは発生するものなのでしょうか? ご教授お願いします。