2017-07-06 22 views
1

私は最初に配列を作成してからもう一方をループする2つのクエリではなく、1つのクエリを取得しようとしています。 ...mysql where他のクエリに基づく節

最初のクエリは、ユーザーのセットを返し、その後、私はこれで終わった研究のビットと、これらのユーザーに基づいて、別のテーブルを照会したいが、それは動作しません

SELECT FreeText, (
    SELECT EmailAddress FROM customers WHERE AccessLevel = 'callcentre' 
) AS User FROM orders WHERE FreeText = User 

私は単一のクエリを行うことを好むだろうが、可能ではないthatsのは、私は2番目の

任意の助けをループ最初に作成し、アレイでそれを回避するかどうかは

例の結果を高く評価し、ユーザーは名前が含まれます、例えばLSMITH、nrowe、pmerle

そしてそれらはこのため

customers table 
Id, Email, Add1,  Add2 ect... 
23, lsmith, someaddress, road... 

Orders 
Id, customerId, FreeTxt, Product 
54, 23,   lsmith, mob 

出力は注文から+イドLSMITHあろうFreeTxt

例のテーブル構造として設定されている順序行をretrurnなる第二のクエリIのみ
に参加するが、本当にorders.FreeText = customers.EmailAddressていることを確認するサブクエリを使用すると、内部で同じことを行うことができます必要はありません

+4

サンプルデータと予想される出力を持つテーブル構造を転記できますか? –

+0

セキュリティ上の理由から私はあまり多くを明らかにすることはできません –

+2

あなたはもっと何かを明らかにする必要があるか、解決策が何であるかしか推測できません。おそらく 'JOIN'を含むかもしれませんが、私たちが言うことができないものにはおそらく含まれます。必要に応じて、列の名前をより一般的なものに変更します。とにかくそれは通常より良いです、それは質問をより広く適用可能にします。 – tadman

答えて

6

をテストしながらFreeTxtを求めました一致

SELECT orders.FreeText, customers.EmailAddress 
    FROM orders 
    INNER JOIN customer on orders.FreeText = customers.EmailAddress 
     and customers.AccessLevel = 'callcentre'; 
+0

それはトリックを行うようだね –

関連する問題