SELECIONE em uma referência nula

votos
0

Eu tenho uma relação entre duas tabelas, autores e estilos. Cada autor é associado a um estilo, com o caso especial em que um autor não tem um estilo (IS NULL).

Não há nenhum problema em definir a referência para NULL, mas há um problema em fazer uma consulta para selecionar os autores e estilos.

Por exemplo, a consulta:

SELECT authors.id, authors.name, styles.name, authors.comments FROM 
authors , styles WHERE authors.style = styles.id

simplesmente ignora os autores que têm um estilo NULL (como esperado).

Eu preciso fazer uma seleção que também lista autores com estilo NULL, como uma associação à esquerda faria (eu não posso usar LEFT JOIN fo algumas razões).

Há uma solução que não inclua explícita junta?

Publicado 23/12/2008 em 13:29
fonte usuário
Em outras línguas...                            


4 respostas

votos
4

A solução mais óbvia é um LEFT OUTER JOIN.

Veja: http://www.postgresql.org/docs/8.1/static/tutorial-join.html

Se você não quiser usar explícita junta-se que você deve ser capaz de usar um UNION

SELECT "authors"."id", "authors"."name", "styles"."name", "authors"."comments" FROM 
"authors" , "styles" WHERE "authors"."style" = "styles"."id"
UNION
SELECT "authors"."id", "authors"."name", "", "authors"."comments" FROM 
"authors" WHERE "authors"."style" IS NULL
Respondeu 23/12/2008 em 13:35
fonte usuário

votos
0
SELECT "authors"."id", "authors"."name", "styles"."name", "authors"."comments" FROM    "authors" , "styles" WHERE "authors"."style" = "styles"."id" OR "authors"."style" = null

Você já tentou isso?

Respondeu 23/12/2008 em 13:35
fonte usuário

votos
0

No meu entendimento, você só precisa expandir sua consulta para incluir NULL:

SELECT "authors"."id", "authors"."name", "styles"."name", "authors"."comments" 
FROM "authors" , "styles" 
WHERE "authors"."style" = "styles"."id" OR "authors"."style" IS NULL
Respondeu 23/12/2008 em 13:38
fonte usuário

votos
1

Eu acho que se você não pode usar um LEFT JOIN você deve usar um UNION.
Comente o link de Coding Horror, é muito interessante. A explicação visual do SQL junta

Respondeu 23/12/2008 em 13:45
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more