SQL Server: Select dentro de select

Oi GUJ,
pessoal, estou com uma dúvida, eu preciso fazer a seguinte query :

Então tenho algumas dúvidas:

  1. Esta da forma mais otimizada o possível ?
  2. E por que ainda continua retornando NULL nessa parte :

Agradeço a atenção.

 
existe realmente um id onde m.as_character IS NOT NULL  ?
o valor default para o campo m.as_character é null ou é vazio?


[code]SELECT m.movieid,  m.actorid, (SELECT id FROM actor_character WHERE character = m.as_character AND m.as_character IS NOT NULL ) FROM old_movies m WHERE m.actorid IS NOT NULL  [/code]
 
O seu segundo select retorna mais de um elemente se não me engano para você selecionar assim o select deve retornar um único elemento.

existe realmente um id onde m.as_character IS NOT NULL ?
o valor default para o campo m.as_character é null ou é vazio?

O seu segundo select retorna mais de um elemente se não me engano para você selecionar assim o select deve retornar um único elemento.

[quote=luciano@@]SELECT id FROM actor_character WHERE character = m.as_character AND m.as_character IS NOT NULL

existe realmente um id onde m.as_character IS NOT NULL ?
o valor default para o campo m.as_character é null ou é vazio?

O seu segundo select retorna mais de um elemente se não me engano para você selecionar assim o select deve retornar um único elemento.[/quote]

oi Luciano,
existe valores null para m.as_character sim, e são null e não vazio.

Então cara, no meu segundo select eu queria que ele retornasse um único valor, mas não estou sabendo como formar essa query.

Cara não sei bem como está tua base de dados, mas provávelmente deve ter associação entre old_movie e character para você fazer um join

Tenta assim se você souber utilizar inner join fica bem melhor.

SELECT m.movieid, m.actorid, a.actor_character FROM old_movies m, character c WHERE c.character = m.as_character AND m.as_character IS NOT NULL