lu4n 0 Denunciar post Postado Setembro 25, 2015 Bom Dia Galera, tenho um select pra exibir pacientes em tratamento, está desta maneira... SELECT c.* FROM controle c LEFT JOIN paciente p ON (c.id_paciente = p.id_paciente) WHERE (c.id_situacao = 1 AND c.dt_final >= DATE(NOW()) AND NOT EXISTS (SELECT NULL FROM controle_paciente cp WHERE cp.id_controle = c.id_controle AND DATE(cp.dt_sistema) = DATE(NOW()))) só que tem pacientes separados por unidades, e alguns usuarios tbm, tipo Paciente = 1 Unidade = 1 Paciente = 2 Unidade = 1 Paciente = 3 Unidade = 2 Usuario = 1 Unidade = 1 Usuario = 2 Unidade = 2 Usuario = 3 Unidade = NULL o usuario 3 pode ver todos pacientes, como seria no sql. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 25, 2015 Tente algo assim ... and ( (Usuario.Unidade = NULL) or (Usuario.Unidade = Paciente.Unidade) ) ... Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Setembro 25, 2015 Particularmente, eu evitaria usar OR. Faria com UNION, por conta de aproveitamento de índices (logo, melhor performance). SELECT p.* FROM Paciente WHERE Paciente.CodUnidade IS NULL UNION SELECT p.* FROM Paciente, Unidade WHERE Paciente.CodUnidade = Unidade.CodUnidade @motta Só uma pequena correção: no caso de NULL, o correto é ... Usuario.Unidade IS NULL []'s Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 25, 2015 @hufersil , 110% certo no is null !!! Quanto a sua solução não estaria certo se o UNION é melhor que o OR , só testando. []´s Compartilhar este post Link para o post Compartilhar em outros sites