2015-03-30 4 views
0

У меня были проблемы с этим запросом в течение почти 3-х часов, и никакого количества Googling помогает мне до сих пор:где и имеющий приоритет в MySQL Query

select id,nombres,apaterno,amaterno, (select sum(cargo) from tb_consultorios_recibos_transacciones where id_paciente = tb_consultorios_pacientes.id and date(fecha_trans)>='2015-03-01' and date(fecha_trans)<='2015-03-31') as cargospaciente, (select sum(abono) from tb_consultorios_recibos_transacciones where id_paciente = tb_consultorios_pacientes.id and date(fecha_trans)>='2015-03-01' and date(fecha_trans)<='2015-03-31') as abonospaciente from tb_consultorios_pacientes where id_consultorio = 3 order by apaterno asc, cargospaciente desc 

кроме того, где положению, я хотел бы только для отображения строки, где псевдоним cargospaciente или abonospaciente больше, чем 0, это вопрос я пытаюсь что, очевидно, не работает:

select id,nombres,apaterno,amaterno, (select sum(cargo) from tb_consultorios_recibos_transacciones where id_paciente = tb_consultorios_pacientes.id and date(fecha_trans)>='2015-03-01' and date(fecha_trans)<='2015-03-31') as cargospaciente, (select sum(abono) from tb_consultorios_recibos_transacciones where id_paciente = tb_consultorios_pacientes.id and date(fecha_trans)>='2015-03-01' and date(fecha_trans)<='2015-03-31') as abonospaciente from tb_consultorios_pacientes where id_consultorio = 3 having (cargospaciente>0 or abonospaciente>0) order by apaterno asc, cargospaciente desc 

любая помощь в том, чтобы указать, имея и где в том же пункте?

ответ

1

Попробуйте это, как показано ниже; получая нужный столбец sum с надлежащей группировкой, а затем соедините этот результирующий набор с результатом внешнего выбора

select tcp.id, 
tcp.nombres, 
tcp.apaterno, 
tcp.amaterno, 
tab.sum_cargo, 
tab.sum_abono 
from tb_consultorios_pacientes tcp 
join 
(
select id_paciente, sum(cargo) as sum_cargo, sum(abono) as sum_abono 
from tb_consultorios_recibos_transacciones 
where date(fecha_trans)>='2015-03-01' 
and date(fecha_trans)<='2015-03-31' 
group by id_paciente 
having sum_cargo > 0 or sum_abono > 0 
) tab 
on tcp.id = tab.id_paciente 
where tcp.id_consultorio = 3 
order by tcp.apaterno asc, tcp.cargospaciente desc 
Смежные вопросы