[firebase-br] DUVIDA EM SELECT

Ramiro Cavalcanti ramiro_puc em hotmail.com
Sex Out 10 20:28:08 -03 2008


Caros amigos,
estou com uma dúvida em um SELECT. Gostaria de saber qual dos dois é mais 
rápido e se há uma outra maneira de fazer.

TABELA: ORDEM_SERVICO
ID, THREAD_VENDEDOR, THREAD_TECNICO...

(THREAD = FK->USUARIO)

Vou fazer o JOIN usando as chaves estrangeiras para duas colunas de uma 
tabela (ORDEM DE SERVICO), que referenciam para a mesma tabela (USUARIO).

O THREAD_TECNICO nem sempre existe (deve retornar null se nao achar 
correspondencia).
O THREAD_VENDEDOR sempre existe.

Usarei "JOIN" para THREAD_VENDEDOR e "LEFT JOIN" para THREAD_TECNICO.

COMO EU FIZ (usando um join pra cada campo, ainda q na mesma tabela):

SELECT t2.LOGIN VENDEDOR, t3.LOGIN TECNICO FROM ORDEM_SERVICO t1
JOIN USUARIO t2 ON t1.THREAD_VENDEDOR = t2.ID
LEFT JOIN USUARIO t3 ON t1.THREAD_VENDEDOR = t3.ID

DUVIDA.1:

SERIA MAIS RAPIDO FAZER UM SUBELECT? (acho que nao, ne?)

SELECT (SELECT LOGIN FROM USUARIO WHERE ID = t1.THREAD_SERVICO) as VENDEDOR

DUVIDA 2:
Existe alguma maneira de usar LEFT JOIN em ambos? Em um unico join? Como 
ficará o nome das tabelas desse jeito?

Exemplo:

SELECT t2.LOGIN(????), t3.LOGIN(????) FROM ORDEM_SERVICO t1 LEFT JOIN 
USUARIO t2 ON t1.THREAD_VENDEDOR = t2.ID AND t1.THREAD_TECNICO = t2.id.

Obrigado,
Ramiro Cavalcanti.








Mais detalhes sobre a lista de discussão lista