[firebase-br] Escolha entre Sub-Selects ou Joins.

terossi terossi em lightsystemsoft.com.br
Seg Mar 12 12:30:34 -03 2007


    certo, intao pelo que disse só é recomendado utilizar sub-select quando 
necessito que ele execute alguma operação onde nao posso executar com o join 
é isso? caso contrario sempre utilizar join?

"Marcelo Silva" <marcvan em ig.com.br> escreveu 
na mensagem news:022301c75c3c$2c755a70$9d00a8c0 em terminal15lest...
Eu mudaria sua expressão de "cada caso é um caso" para "cada função é para
um caso"
JOIN serve para Juntar tabelas
SUB-SELECT serve para selecionar registros em determinadas situações

Exmplo: JOIN

SELECT
  CLI.NOME,
  CID.CIDADE
FROM TAB_CLIENTES CLI
INNER JOIN CIDADES CID ON(CID.COD_CID = CLI.COD_CID)

Neste select traremos as os clientes e as cidades onde moram os clientes um
sub-select aí não seria apropriado a pesar de funcionar

Exemplo: SUB-SELECT

SELECT
  P.PROD_DESC
  SELECT VALOR FROM ITENS WHERE (COD_PROD = P.COD_PROD) AS TOTAL
FROM PEDIDOS P

Neste traremos os produtos e seu valor total somando o valor dos Itens no
SubSelect

Neste segundo caso não daria pra usar o JOIN pois não seria uma junção de
tabelas e sim selects distintos

Espero ter ajudado...


----------------------
Marcelo Silva
(11) 9693-4251
(11) 6723-3106 - LESTCRED
MSN: marcvan em ig.com.br





----- Original Message ----- 
From: "Rubens J Rodrigues" 
<rubens.rodrigues em abrevo.com.br>
To: <lista em firebase.com.br>
Sent: Thursday, March 01, 2007 4:37 PM
Subject: [firebase-br] Escolha entre Sub-Selects ou Joins.


Pessoal,

Sei que cada caso é um caso, e que mais ainda tudo depende do resultado
dos testes feitos, mas, tenho uma dúvida :

Qual seria o melhor método, usar subselects ou joins ? ex.:

  1) Se eu faço um select na tabela de clientes, e precisar buscar em
qual regiao de ele pertence, quanto ele já comprou, quanto já foi
bonificado.

  a) Com sub-select :
     select  clientes.codigo,
             clientes.nome,
             (select nomeregiao from regioes where
regioes.codregiao=clientes.codigo),
             (select coalesce(sum(notafsaid.vlatend),0) from notafsaid
where notafsaid.codcli=clientes.codigo where tipovenda=1),
             (select coalesce(sum(notafsaid.vlatend),0) from notafsaid
where notafsaid.codcli=clientes.codigo where tipovenda=5)

     from
             clientes.


  b) Com Join
     select  clientes.codigo,
             clientes.nome,
             regioes.nomeregiao,
             (select coalesce(sum(notafsaid.vlatend),0) from notafsaid
where notafsaid.codcli=clientes.codigo where tipovenda=1),
             (select coalesce(sum(notafsaid.vlatend),0) from notafsaid
where notafsaid.codcli=clientes.codigo where tipovenda=5)

     from
             clientes
             left outer join regioes on
clientes.codregiao=regiores.codregiao.

Obrigado



______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa







Mais detalhes sobre a lista de discussão lista