2017-02-23 61 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 user_id FROM tb_user_experience WHERE 
    company_name IN(SELECT company_name FROM tb_company WHERE 
    tb_company.no_employee = '2'))) 

ответ

1

Попробуйте

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')) 

Использование Регистрация Пунктом для лучшей производительности

+0

i изменен код che ck это. –

+0

Какое сообщение об ошибке? –

+0

Извините, я изменил код сейчас. –

0

Запрос также может быть переписана в виде:

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' 
Смежные вопросы