2016-04-11 2 views
0

Что может быть неправильно с этим скриптом? Я получаю сообщение об ошибкеErr1242 - вспомогательный запрос возвращает более 1 строки

«[Err] 1242 - Подзапрос возвращает более 1 строки».

Как это исправить? Спасибо!

SELECT 
    j.id AS JobID, 
     CASE WHEN j.id = (SELECT o.attachment_id from origins o where o.attachment_type="Job" AND o.alliance_partner_id = 12) then "Channel 1" 
     WHEN j.id = (SELECT o.attachment_id from origins o where o.attachment_type="Job" AND o.alliance_partner_id = 15) then "Channel 2" 
     WHEN j.id = (SELECT t.record_id FROM tracked_records t where t.record_type = 'Job') then "Channel 3" 
     WHEN j.id = (SELECT r.job_id from job_referrers r where r.url IN ('ios','android')) then "Channel 4" 
     END AS "Channels" 
FROM jobs j 
GROUP BY j.id 
; 
+1

Это сообщение об ошибке само собой разумеется. Можете ли вы изменить подвыборы, чтобы они возвращали только одну запись? –

ответ

0

Один из вариантов синтаксически исправить запрос будет использовать WHERE IN для каждого из суб- SELECT с:

SELECT j.id AS JobID, 
    CASE WHEN j.id IN (SELECT o.attachment_id from origins o where o.attachment_type="Job" AND o.alliance_partner_id = 12) THEN "Channel 1" 
     WHEN j.id IN (SELECT o.attachment_id from origins o where o.attachment_type="Job" AND o.alliance_partner_id = 15) THEN "Channel 2" 
     WHEN j.id IN (SELECT t.record_id FROM tracked_records t where t.record_type = 'Job') THEN "Channel 3" 
     WHEN j.id IN (SELECT r.job_id from job_referrers r where r.url IN ('ios','android')) THEN "Channel 4" 
    END AS "Channels" 
FROM jobs j 
GROUP BY j.id 

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

Смежные вопросы