Subselect só forçando
Pessoal, estou precisando fazer uma consulta com uso de subselect, só que está falhando, a sentença deve ser a seguinte:
Me resulta o seguinte:
3509 | 10 | 11/7/2006 | 39956 | [color=red:66ef2e0ab8]<nil>[/color:66ef2e0ab8]
Mas na verdade, o resultado deveria ser o resultado da sentença abaixo:
Me resulta o seguinte:
3509 | 10 | 11/7/2006 | 39956 | [color=Red:66ef2e0ab8]1[/color:66ef2e0ab8]
A segunda sentença funfa direitinho, mas só pq eu forço o valor de NRORDEM na subselect!!!
Qual é o motivo disto acontecer???
select C.CODIGO, C.VALOR, C.DATA, C.NRORDEM, (select P.COD_VENDEDOR from DBPEDIDOS P where P.NRORDEM = C.NRORDEM) as COD_VENDEDOR from DBCAIXA C where C.CODIGO = 35059
Me resulta o seguinte:
3509 | 10 | 11/7/2006 | 39956 | [color=red:66ef2e0ab8]<nil>[/color:66ef2e0ab8]
Mas na verdade, o resultado deveria ser o resultado da sentença abaixo:
select C.CODIGO, C.VALOR, C.DATA, C.NRORDEM, (select P.COD_VENDEDOR from DBPEDIDOS P where P.NRORDEM = 39956) as COD_VENDEDOR from DBCAIXA C where C.CODIGO = 35059
Me resulta o seguinte:
3509 | 10 | 11/7/2006 | 39956 | [color=Red:66ef2e0ab8]1[/color:66ef2e0ab8]
A segunda sentença funfa direitinho, mas só pq eu forço o valor de NRORDEM na subselect!!!
Qual é o motivo disto acontecer???
Aloizio Castro
Curtidas 0
Respostas
Night_man
25/07/2006
tu ja tentou fazer um join ao inves de um subselect, tipo:
select C.CODIGO, C.VALOR, C.DATA, C.NRORDEM, P.COD_VENDEDOR
from DBCAIXA C
inner join DBPEDIDOS P on P.NRORDEM = C.NRORDEM
where C.CODIGO = 35059
select C.CODIGO, C.VALOR, C.DATA, C.NRORDEM, P.COD_VENDEDOR
from DBCAIXA C
inner join DBPEDIDOS P on P.NRORDEM = C.NRORDEM
where C.CODIGO = 35059
GOSTEI 0
Aloizio Castro
25/07/2006
Jah sim... com join funfa direitinho.... fica joinha joinha...... mas gostaria de fazer com subselect :?
Não tem solução???
Não tem solução???
GOSTEI 0
Aloizio Castro
25/07/2006
Jah sim... com join funfa direitinho.... fica joinha joinha...... mas gostaria de fazer com subselect :?
Não tem solução???
Não tem solução???
GOSTEI 0
Rjun
25/07/2006
Uma pergunta que não quer calar. Por que você não quer utilizar o Join?
GOSTEI 0
Rjun
25/07/2006
Bom, talvez ele faça o subselect primeiro e ainda não tenha o valor para C.NRORDEM. Por isso ele retorna Null. Isso é um chute.
GOSTEI 0
Aloizio Castro
25/07/2006
Uma pergunta que não quer calar. Por que você não quer utilizar o Join?
Acredito que uma subselect seria mais rapido nesta situação!
GOSTEI 0
Aloizio Castro
25/07/2006
Bom, talvez ele faça o subselect primeiro e ainda não tenha o valor para C.NRORDEM. Por isso ele retorna Null. Isso é um chute.
Tb acredito nesta hipotese, tanto q qdo eu defino o valor para o campo [b:cd26a489f1]C.NRORDEM[/b:cd26a489f1] a coisa funciona!!
E solução para isto :roll: ?
GOSTEI 0
Rjun
25/07/2006
Desempenho de banco de dados é algo complicado, mas não tenho certeza se um subselect realmente é mais rápido.
GOSTEI 0
Night_man
25/07/2006
eu sempre prefiro fazer um join a um subselect, acho mais seguro e se estiver fazendo a uniao com chave ou indice fica muito rapido
GOSTEI 0