Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

davisvasconcellos

[Resolvido] valores que nã oexistem na tabela (left Join)

Recommended Posts

pessoal,

to tentando dar um left join mas não estou entendendo direito. alguém pode me dar uma ajuda?

eu tenho duas tabelas:

[fases]

codigo

nome

 

[fases_projetos]

codigo

cod_fase

cod_projeto

 

eu gostaria de listar todas as fases da tabela FASES e de alguma forma sinalizar as que tem na tabela FASES_PROJETOS

filtrando pelo numero do projeto na coluna cod_projeto

 

ficaria algo assim:

 

projeto-001 |faseNome| ok|

projeto-001 |faseNome| ok|

projeto-001 |faseNome| null|

projeto-001 |faseNome| null|

projeto-001 |faseNome| null|

 

ou melhor assim:

 

|faseNome| projeto-001|

|faseNome| projeto-001|

|faseNome| null|

|faseNome| null|

|faseNome| null|

.

.

.

 

assim saberei que os valores null são as fases que não estão estão atribuídas

 

 

estou tentando o leftjoin

 

select f.nome,f.codigo,f.abreviatura

from

fases f

left join

fases_projetos fp

on

f.codigo = fp.cod_fase

where

fp.cod_projeto = 316

 

mas só consigo pegar os registros que tem nas duas

 

devo estar mongando pela hora...

 

alguém tem uma luz?

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal,

to tentando dar um left join mas não estou entendendo direito. alguém pode me dar uma ajuda?

eu tenho duas tabelas:

[fases]

codigo

nome

 

[fases_projetos]

codigo

cod_fase

cod_projeto

 

eu gostaria de listar todas as fases da tabela FASES e de alguma forma sinalizar as que tem na tabela FASES_PROJETOS

filtrando pelo numero do projeto na coluna cod_projeto

 

ficaria algo assim:

 

projeto-001 |faseNome| ok|

projeto-001 |faseNome| ok|

projeto-001 |faseNome| null|

projeto-001 |faseNome| null|

projeto-001 |faseNome| null|

 

ou melhor assim:

 

|faseNome| projeto-001|

|faseNome| projeto-001|

|faseNome| null|

|faseNome| null|

|faseNome| null|

.

.

.

 

assim saberei que os valores null são as fases que não estão estão atribuídas

 

 

estou tentando o leftjoin

 

select f.nome,f.codigo,f.abreviatura

from

fases f

left join

fases_projetos fp

on

f.codigo = fp.cod_fase

where

fp.cod_projeto = 316

 

mas só consigo pegar os registros que tem nas duas

 

devo estar mongando pela hora...

 

alguém tem uma luz?

 

abs

 

Vê se vai rolar ai...

 

select a.*,b* from (fases_projetos a) left outer join fases b on a.codigdo=b.codigo

 

tenta sem where

 

caso não seja o resultado que você quer coloca o where

where a.cod_projeto = 316

Compartilhar este post


Link para o post
Compartilhar em outros sites

quase isso.

select a.cod_projeto,b.nome from (fases_projetos a) left outer join fases b on a.codigo=b.codigo

where a.cod_projeto = 3

 

sem o where a consulta retorna os registros das fases junto com a quantidade de registros da fases_projetos

até aparecem os nomes das fases, mas vem misturado com os outros registros

1 ESTUDOS INICIAIS

1 ORCAMENTOS

1 PRE REQUISITOS

1 COMPRA DE MATERIAL

1 PRÉ EXECUÇÃO

1 EXECUÇÃO

2 TESTES

2 HOMOLOCAÇÃO

2 VENDA

2 PÓS VENDA

3 GARANTIA

3 ENTREGA

3 \N

3 \N

3 \N

3 \N

 

 

 

com o where ela retorna a quantidade certa de registros das fases, mas somente tem o nome nos registros que os códigos são os mesmos

 

3 GARANTIA

3 ENTREGA

3 \N

3 \N

3 \N

3 \N

3 \N

3 \N

3 \N

 

 

eu quero o oposto praticamente. tipo isso:

 

 

3 GARANTIA

3 ENTREGA

3 PRÉ EXECUÇÃO

\N EXECUÇÃO

\N TESTES

\N HOMOLOCAÇÃO

 

inverti a tabela mas o resultado foi somente os registros que existem nas duas

select a.nome,b.* from (fases a) left outer join fases_projetos b on a.codigo=b.codigo

where b.cod_projeto = 2

 

a ideia é a mesma de uma tabela de produtos e uma de vendas por usuário.

tenho 10 produtos(laranja,maça,banana...) e 3 usuários vendendo.

quero a lista de todos os produtos e assinalar os vendidos do usuário 2.

 

maça - ok

laranja - ok

pera - null

banana - null

jaca - ok

melao - null

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguém tem alguma ideia?

 

resolvi.

valeu a ajuda ae cara.

select f.nome,f.codigo,fp.cod_projeto from fases f

left outer join fases_projetos fp on f.codigo=fp.cod_fase

and fp.cod_projeto=316

 

não era o where. coloquei AND

 

ae o resultado:

 

Executivo,6,316/N

Masterplan,8,NULL/N

Liberado para Obra,13,NULL/N

Aceite,14,316/N

Plano Diretor,15,NULL/N

INFO-TR,21,NULL/N

Back-Office,22,NULL

 

 

valeu mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.