Tenho a seguinte estrutura de tabelas no banco de dados.
sendo assim, realizei a seguinte consulta para listar as Os’s e o colaborador que está atendendo a solicitação.
select
os.Cod as codOs,
os.Descricao as Problema,
t.Cod as codTipo,
t.Descricao as Tipo,
s.Cod as CodSetor,
s.Descricao as Setor,
p.Cod as CodPrioridade,
p.Descricao as Prioridade,
st.Cod as codSituacao,
st.Descricao as Situacao,
l.Cod as codLoguin,
l.Loguin as Responsavel
from
statusos as sos
join os as os on (sos.FkOs=os.Cod)
join tipo as t on(sos.FkTipo=t.Cod)
join setor as s on(sos.FkSetor=s.Cod)
join prioridade as p on (sos.FkPrioridade=p.Cod)
join situacao as st on (sos.FkSituacao=st.Cod)
join loguin as l on (sos.FkLoguin=l.Cod);
Vamos lá, existem algumas coisas nos JOIN que são bem bacanas. Uma delas é o LEFT JOIN, que permite que você faça pesquisas em duas ou mais tabelas e defina que você quer todos os resultados MESMO QUE o que você definiu para as tabelas Á ESQUERDA estejam vazios (o famoso nulo).
Por isso, creio que isso
select
os.Cod as codOs,
os.Descricao as Problema,
t.Cod as codTipo,
t.Descricao as Tipo,
s.Cod as CodSetor,
s.Descricao as Setor,
p.Cod as CodPrioridade,
p.Descricao as Prioridade,
st.Cod as codSituacao,
st.Descricao as Situacao,
l.Cod as codLoguin,
l.Loguin as Responsavel
from
statusos as sos
join os as os on (sos.FkOs=os.Cod)
join tipo as t on(sos.FkTipo=t.Cod)
join setor as s on(sos.FkSetor=s.Cod)
join prioridade as p on (sos.FkPrioridade=p.Cod)
join situacao as st on (sos.FkSituacao=st.Cod)
LEFT JOIN loguin as l on (sos.FkLoguin=l.Cod);
Veja, o problema pode não ser o left join no loguin (ótimo nome para uma tabela).
Pode haver alguma validação nos demais joins que você tem que estejam ligados a OS.
Aliás, eu não consigo entender por que a ligação entre OS e seus respectivo responsavel é uma tabela chamada STATUS_OS, mas, ok, eu não conheço os pormenores desses requisitos. De qualquer forma, reveja toda a consulta, vá montando a mesma parte a parte, afinal, só o LEFT JOIN vai resolver este problema.
Isso não é problema. Estamos todos aprendendo, sempre.
Agora, veja, você deve ter requisitos, deve ter uma especificação para estas tabelas.
Por exemplo, cada OS tem 0 ou 1 responsável, sendo assim, OS recebe uma FK de RESPONSAVEL, o que facilita muito na consulta.
Mas, segue aí.
Rapaz, obrigado pela dica. Deixei o código dessa forma:
select
os.Cod as codOs,
os.Descricao as Problema,
t.Cod as codTipo,
t.Descricao as Tipo,
s.Cod as CodSetor,
s.Descricao as Setor,
p.Cod as CodPrioridade,
p.Descricao as Prioridade,
st.Cod as codSituacao,
st.Descricao as Situacao,
l.Loguin as Responsavel
from
os as os
right join tipo as t on(os.FkTipo=t.Cod)
join setor as s on(os.FkSetor=s.Cod)
join prioridade as p on (os.FkPrioridade=p.Cod)
left join situacao as st on (os.FkSituacao=st.Cod)
left join statusos as sos on (sos.FkOs=os.Cod)
left join loguin as l on (sos.FkLoguin=l.Cod);