Ir para conteúdo
Fórum Script Brasil
  • 0

Problema Com Subconsulta


acmsoft

Pergunta

Alô,

Criei esta query mas está dando erro:

SELECT `firma` FROM `emp` WHERE `cae1` in (SELECT c1

FROM `teste`)

A Versão do cliente MySQL é 3.23.49. Os campos cae1 e c1 são numéricos.

- Dei uma pesquisada no google e li algures que o MySQL só permite subquerys a partir da versão 4. Confirmam?

- A query está bem escrita? eu penso que sim mas já duvido de tudo...

- O campo c1 tem de ser a chave da tabela teste?

O que pode causar esse erro ai?

Valeu pelas dicas,

Alex

Editado por acmsoft
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bom... "in" se usa assim:

select firma

from `acme`.`emp`

where cae1 in ("42.62.00-0","42.23.00-4");

Ou seja, listar as firmas cujo código de atividade economica sejam "42.62.00-0" ou "42.23.00-4", no caso, cae1=varchar...

Estes exemplos estão no MySQL 5.0 Reference Manual

mysql> SELECT 2 IN (0,3,5,7);

-> 0

mysql> SELECT 'wefwf' IN ('wee','wefwf','weg');

-> 1

Como um select sempre retorna uma lista (linhas) como resultado, em troca de ("42.62.00-0","42.23.00-4")

você poderia, então, e perfeitamente, colocar uma subquery... neste caso, uma que retorne as CAEs desejadas, como essa:

select codigoscae from `acme`.`tabelacae` where ramo="PADARIA" group by codigoscae

Isso aí, indica uma query que irá retornar apenas duas linhas contendo os códigos referentes a atividade Padaria.

Então, a query, completa agora, ficaria assim:

select firma

from `acme`.`emp`

where cae1 in (

select codigoscae

from `acme`.`tabelacae`

where ramo="PADARIA"

group by codigoscae

);

Certo?

Quanto às versões, acredito que não deveria funcionar só a partir do MySQL 4... isso porque esta query:

select codigo, nome, data

from ":acmebde:clientesi"

where cidade in ( select cidade from "c:\temp\subquery.sql" )

com "c:\temp\subquery.sql sendo este arquivo:

select cidade

from ":acmebde:clientesi.dbf"

where estado="RJ"

group by cidade

funciona perfeitamente usando o SQL92 do Delphi, ou seja, é um recurso básico do SQL e deve estar implementado na versão 3 sim...

Ok?

Espero ter ajudado!

Se der certo, não esquece de colocar o [resolvido]!!!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...