Subquery com MySQL

14 respostas
L

E ae galera, estou com um probleminha…

Estou tentando realizar um SQL no MySQL, mas o mesmo me retorna um erro. Alguém sabe como posso fazer ele?

SQL:

SELECT * FROM atendimento
WHERE id_objeto = (SELECT MAX(id_objeto) FROM atendimento)

14 Respostas

P

Posta o erro que fica + fácil ajudar :slight_smile:

PS: Esse povo mal acustumado com Oracle :lol: :lol:

K

Lucashgt !!!

Meu vai estuda !!! E para de ouvir sepultura !!!
8) 8) 8)

L

“diego_sl”:
Posta o erro que fica + fácil ajudar :slight_smile:

PS: Esse povo mal acustumado com Oracle :lol: :lol:

E ae guri, já está trabalhando com MySQL? :lol: :lol: (brincadeira…, tudo tranquilo por ae)

O erro: Syntax error or access violation.

Acredito que seja por causa da versão que estou trabalhando.

P

Como era a frase que ele mesmo falava?deixa ver se me lembro, era algo do tipo: “…Cara, sempre olha na documentação, sempre via ter alguém que já passou por algo parecido…” :stuck_out_tongue:

Ta na mão seu Lucas,2 linkzinhos de graça ai :), vê se aprende enquanto to vivo :lol: :lol:
http://dev.mysql.com/doc/mysql/en/Subqueries.html
http://dev.mysql.com/tech-resources/articles/subqueries_part_1.html

U

por que não utilizar SQL ANSI em vez de sub selects em lugares onde eles não deveriam existir (mesmo que o banco aceite)??
tenta este SQL:

SELECT * FROM atendimento
HAVING id_objeto = MAX(id_objeto)

“Lucashgt”:
E ae galera, estou com um probleminha…

Estou tentando realizar um SQL no MySQL, mas o mesmo me retorna um erro. Alguém sabe como posso fazer ele?

SQL:

SELECT * FROM atendimento WHERE id_objeto = (SELECT MAX(id_objeto) FROM atendimento)

L

“diego_sl”:
"…Cara, sempre olha na documentação, sempre via ter alguém que já passou por algo parecido…"
:smiley:

Já tinha olhado a documentação, mas nada… :wink:

L

“urubatan”:
por que não utilizar SQL ANSI em vez de sub selects em lugares onde eles não deveriam existir (mesmo que o banco aceite)??
tenta este SQL:

SELECT * FROM atendimento
HAVING id_objeto = MAX(id_objeto)

Até rodou, porém, não me retornou nada…
Vou continuar pesquisando…

Valeu ae Urubatan… :wink:

U

e qual o conteúdo da tabela atendimento??

L

São vários campos, porém, a pesquisa feita da maneira que tu postou não retorna nenhum registro.

Os campos são de valores, algumas descrições sobre o antendimento e o id do mesmo.

P

SELECT * FROM atendimento WHERE id_objeto = MAX(id_objeto)

Test it! :smiley:

L

“diego_sl”:
SELECT * FROM atendimento WHERE id_objeto = MAX(id_objeto)

Test it! :D

Invalid use of group function!

Já tinha testado também…

U

bom, eu tinha escrito o SQL na pagina mesmo, e fui conferir agora, prestando atenção, não tenho ideia do por que eu mandei a mensagem aqui, sub select no where é ANSI sim, tanto que o in () é ANSI e aceita um select dentro dos parentesis :slight_smile:

acho que to viajando hoje :slight_smile:

Utilização excessiva de Hibernate prejudica o seu SQL :slight_smile:

L

Na real é isso que está me faltando… :smiley:

Mas valeu pela ajuda.

D

Sabe por que sua query que inclui subqueries não funcionam no MySQL? Por um motivo bem simples: MySQL não suporta subqueries. O gerador de planos e compilador de consultas do MySQL são tão ruins que não conseguem trabalhar com subqueries. :stuck_out_tongue:
Além do mais, sempre que possível, evite usar subqueries. Não porque a porcaria do MySQL não as suporta (ou não as suportava; as versões 3.2X do MySQL não suportavam subqueries), mas porque o otimizador de consultas e de planos vão ter um trabalho do cão para conseguir otimizar suas queries (isso quando os coitados conseguirem otimizá-la; muitas vezes isso não é possível e você acaba tendo consultas muito demoradas e pouco eficientes).

Criado 12 de maio de 2004
Ultima resposta 13 de mai. de 2004
Respostas 14
Participantes 5