SQL

ERLANMG 28/07/2017 11:18:50
#475491
Bom dia!

Estou usando essa sql:

SQL = [Ô]select empresa.*, municipio.municipio, municipio.nome_uf FROM empresa, municipio where municipio.Cod_mun = empresa.codigomunicipio and [Ô] & CampoConsulta & [Ô] like [ô][Ô] & txtProcura.Text & [Ô]%[ô] order by razaosocial[Ô]

conn.Open()
cmd = New MySqlCommand(SQL, conn)
dr = cmd.ExecuteReader()

ListView1.Items.Clear()
If dr.HasRows = False Then
MessageBox.Show([Ô]Não foram encontrados resultados para a pesquisa.[Ô] & vbNewLine & [Ô]Favor redefinir os parâmetros.[Ô], [Ô]Mensagem do Sistema[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Exit Sub
End If

Gostaria da ajuda de voces, como ficaria essa SQL, quando a empresa por algum motivo não foi cadastrado o código do município, sendo assim a sql acima encontraria a empresa cadastrada, mas não o municipio. pois do jeito que coloquei acima se ela não encontrar o municipio ela me dar mensagem de dados não encontrados, gostaria que ela me apresentasse a empresa consultada de qualquer maneira tenho ou não o municipio cadastrado.

Desde já agradeço a ajuda de todos.

Abraços,
KERPLUNK 28/07/2017 11:42:15
#475493
Resposta escolhida
Uma subquery não serve?

SQL = [Ô]select empresa.*, (select municipio.nome_uf where municipio.cod_mun = empresa.codigomunicipio) WHERE [Ô] & CampoConsulta & [Ô] like [ô][Ô] & txtProcura.Text & [Ô]%[ô] order by razaosocial[Ô]

ERLANMG 28/07/2017 16:33:47
#475499
Boa tarde!

Consegui a solução utilizando LEFT JOIN, tem como resultado todos os registros que estão na tabela mais a esquerda e os registros da tabela mais direita que são comuns à tabela da esquerda.

Segue instrução SQL;


SQL = [Ô]select empresa.codigo, empresa.razaosocial, empresa.cnpj, municipio.municipio, municipio.nome_uf from empresa left join municipio on codigomunicipio = cod_mun where [Ô] & CampoConsulta & [Ô] like [ô][Ô] & txtProcura.Text & [Ô]%[ô] order by razaosocial[Ô]

Obrigado KERPLUNK pela ajuda.

Abraços,
Tópico encerrado , respostas não são mais permitidas