Вывод запроса, вход для другого запроса не работает - не работает - PullRequest
0 голосов
/ 28 сентября 2011

Я хочу использовать возврат одного запроса в качестве ввода для другого.

Когда я запускаю их по отдельности, они работают нормально, но когда я объединяю их в один, он не работает.

Отдельные запросы: -

select ja.id 
from job_applications ja 
join users u 
on u.id = ja.user_id 
where u.email='xxxxx@gmail.com' 
order by ja.updated_at desc 
limit 1 

Выходные данные

308480

, и когда я использую это значение в качестве входных данных для другого запроса, я получаю желаемый результат

select * from delayed_jobs dj
where handler like "%308480%"

НО, теперь, когда я пытаюсь выполнить его как один запрос, он не работает (я не получаю вывод)

select * from delayed_jobs dj
where handler like 
"%(select ja.id 
   from job_applications ja 
   join users u 
   on u.id = ja.user_id 
   where u.email='xxxxx@gmail.com' 
   order by ja.updated_at desc
   limit 1)%"

Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Вы не можете выполнить SQL-код внутри подобного оператора, подобного этому. Вам нужно сгенерировать подобное выражение, объединяя результат вместе примерно так:

where handler like
    concat('%', (select ja.id 
        from job_applications ja 
        join users u 
        on u.id = ja.user_id 
        where u.email='xxxxx@gmail.com' 
        order by ja.updated_at desc
        limit 1),
    '%')
0 голосов
/ 28 сентября 2011

Для динамического SQL вы должны использовать хранимую процедуру, как пояснил mellamokb в своем ответе. Тем не менее, ваш запрос не является динамическим, и поэтому вы можете использовать подвыбор. Например:

select * from delayed_jobs dj
where handler like 
    (select concat('%', ja.id, '%')
       from job_applications ja 
       join users u 
       on u.id = ja.user_id 
       where u.email='xxxxx@gmail.com' 
       order by ja.updated_at desc
       limit 1)

UPDATE

извините, по-видимому, я неверно истолковал ответ Мелламокба ... действительно, он такой же, как мой ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...