2017-02-23 8 views
0

私はどのように書くのが適切な方法でこのタイプの質問をしますか?別のINクエリにINクエリを別の方法で書き込む方法?

SELECT * FROM tb_user WHERE (
    id IN (SELECT user_id FROM tb_user_experience 
    WHERE 
    company_name IN(SELECT company_name 
    FROM tb_company 
    WHERE tb_company.no_employee = '2')) 

私は、これは間違っているクエリです知っているが、MySQLの適切な構文でこのロジックで結果を取得する方法?

これは私の完全なクエリは、この

SELECT * FROM tb_user WHERE 
    steps_completed = 6 AND is_active='y' AND id != '1' AND 
    (country != '') AND (
    id IN ( select e.user_id from tb_user_experience e 
    inner join tb_company c on c.company_name=e.company_name 
    where c.no_employee = '2')) 

使用して、パフォーマンスを向上させるためにJOIN句を

答えて

1

以下で半分クエリです:

SELECT u.* 
FROM tb_user u 
INNER JOIN tb_user_experience e 
    ON u.id = e.user_id 
    AND u.steps_completed = 6 
    AND u.is_active = 'y' 
    AND u.id != '1' 
    AND u.country != '' 
INNER JOIN tb_company c 
    ON c.company_name = e.company_name 
    AND c.no_employee = '2' 
+0

変更コードcheそれをck。 –

+0

エラーメッセージは何ですか? –

+0

申し訳ありませんが、私は今すぐコードを変更しました。 –

0

クエリはまたように書き換えることができます試してみてください

SELECT * FROM tb_user WHERE 
    steps_completed = 6 AND is_active='y' AND id != '1' AND 
    (country != '') AND (
    id IN (SELECT user_id FROM tb_user_experience WHERE 
    company_name IN(SELECT company_name FROM tb_company WHERE 
    tb_company.no_employee = '2'))) 
関連する問題