2012-03-22 5 views
4

テーブルAとテーブルBは、テーブルAがA1とA2を含むいくつかのカラムを持ちます。表Bにもいくつかの列があります。 私のクエリでは、A1とA2の値を連結してからB1の内部結合を行う必要があります。SQLクエリInner JOINの間に2つの列を連結します。

例:

Select * 
From A 
INNER JOIN B 
ON CONCAT(A1,A2) = B1. 

どうやらこれは、それがどのように動作するかをではありません。誰かが私にこのクエリの手を差し上げてくれますか?

ありがとうございました。

+0

どのタイプのSql? –

+0

IDでリンクするほど効率的ではありませんが、これが必要な場合は、これが必要です。最も基本的な要件を超えて問題を単純化することはできません! – Blindy

+0

MS-SQL?それがあなたのqsなら。 :-P – Nir

答えて

13

これを試してみてください:

Select * 
From A 
INNER JOIN B 
ON A1 + A2 = B1 
+0

これは何のエラーも投げなかったが、6分を超えていた。私のクエリはまだ実行されています。パフォーマンスは打撃を受けています。 – Nir

+2

@ user583227 - これはどちらかの答えです。パフォーマンスが悪い場合は、テーブルを正規化して正しくインデックスする必要があります。 +1 – Lamak

+0

残念ながら、それは遅く動作します。連結を使用して効率的に2つのテーブルを結合する方法がないためです。しかし、それは動作します。 –

1

Sample taken from

表地理

region_name store_name 
East Boston 
East New York 
West Los Angeles 
West San Diego 

例1:MySQLの/ Oracleの場合 :

SELECT CONCAT(region_name,store_name) FROM Geography 
    WHERE store_name = 'Boston'; 
Result: 'EastBoston' 

Exampl E 2:Oracleの場合 :

SELECT region_name || ' ' || store_name FROM Geography 
    WHERE store_name = 'Boston'; 
Result: 'East Boston' 

例3:SQL Serverの場合 :

SELECT region_name + ' ' + store_name FROM Geography 
    WHERE store_name = 'Boston'; 
Result: 'East Boston' 

これから始めて、あなたはあまり問題なく二つのテーブルに適応することができます。 疑わしいことに、物事をより読みやすくするために仮想表を使用してください。

疑問がある場合は、この他の質問を確認してください。これについては、詳細を参照してください。

StackOverFlow Similar Question