Возможно, проще, чем ответ redgeoff , если вы не нуждаетесь в нем автоматизированным способом, вы можете сцепить обещания с помощью $q.when()
в сочетании с .then()
, как показано в начале этот пост .
return $q.when()
.then(function(){ return promise1; })
.then(function(){ return promise2; });
Как насчет использования UNION снова?
SELECT
ps.id,
ps.pdf,
ps.emp_id,
ps.emp_type,
external_employee.name AS comemp,
internal_employee.comp_empl_name AS comemp
FROM
pay_slip AS ps
INNER JOIN
internal_employee_master AS internal_employee ON internal_employee.comp_trad_id = ps.trade_id
WHERE
ps.is_deleted = 1 AND ps.id = '".$id."'
AND ps.type = 'internal'
UNION ALL
SELECT
ps.id,
ps.pdf,
ps.emp_id,
ps.emp_type,
external_employee.name AS comemp,
internal_employee.comp_empl_name AS comemp
FROM
pay_slip AS ps
INNER JOIN
external_employee_master AS external_employee ON external_employee.trad_id = ps.trade_id
WHERE
ps.is_deleted = 1 AND ps.id = '".$id."'
AND ps.type = 'external'
Вы можете попробовать это
SELECT ps.id, ps.pay_slip, ps.emp_type, COALESCE(i.employee_name, e.name) AS name
FROM payslips ps
LEFT JOIN internal_employee_master i ON i.id = ps.emp_id AND ps.emp_type = 'internal'
LEFT JOIN external_employee_master e ON e.id = ps.emp_id AND ps.emp_type = 'External'
AND ps.id = :ID
Вы можете увидеть это в действии здесь http://sqlfiddle.com/#!9/53a195/7/0
[ 116] Я бы упомянул, что в ваших включенных таблицах и запросах есть ряд проблем. Например, неправильные имена столбцов между таблицами (name вместо employee_name), вы пропустили столбецis_deleted
из своей примерной схемы, и у вас есть заглавные и некапитализированные значения в столбце emp_type
, что сбивает с толку. [116 ]