2017-10-09 3 views
-1

どのように値を検索できますか? g。異なる列を持つ複数のテーブルの電子メールアドレス?または、クエリを最適化しますか?値の異なるテーブルの2つの列を見ているSQL

私の例

$email = '[email protected]'; 

$email = "SELECT a.email_one, a.email_two,b.email_three 
FROM first_table AS a, second_table AS b 
WHERE a.email_one = $email OR b.email_two = $email"; 

ありがとうございます!

+1

いくつかのサンプルテーブルデータと期待される結果を、フォーマットされたテキスト(画像ではない)として追加してください。 – jarlh

+0

おそらく 'UNION ALL'ですか? – jarlh

+0

Sossy、コードを修正しました。 UNIONでは、同じ数の列を持つ必要があります。私の質問は違う。 – Mark

答えて

0

SELECT a.email_one, b.email_two FROM first_table AS a inner join second_table AS b ON a.email_one=b.email_two and a.email_one='".$email."'

1

それは2つの表に表示されますが、2つのテーブル間の関連データは、ちょうど2つのテーブル

SELECT a.email, 'from-first-table' from first_table a where ... 
UNION 
SELECT b.email, 'from-second-table' from second_table b where ... 
0

ほとんど常にスプレイのは悪いスキーマ設計であるから、クエリの間UNIONを使用しない場合列間で(あなたの場合は電子メールの)配列代わりに、余分な表で複数の行を使用してください:

SELECT ... 
    FROM Main 
    JOIN Emails USING(user_id) 
    WHERE Emails.email = '$email'; 

Emails: INDEX(email, user_id) 

非常に効率的です。ユーザーあたり0,1,2、または3つ以上の電子メールを許可します。

関連する問題