Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

2 Consultas usando UNION com limite de linhas nas duas

Boa noite, tenho uma dúvida que é a seguinte: quero usar uma só consulta para buscar dois tipos de "pessoas" com o status 2 e 3 no BD usando union. Usei a seguinte consulta:

SELECT DISTINCT id, nome, categoria FROM tb_pessoas WHERE status = "a" AND categoria = 2 LIMIT 5
 UNION SELECT DISTINCT id, nome, categoria FROM tb_pessoas WHERE (status = "a" AND categoria = 3) LIMIT 7;

usei uma ferramenta online ( https://pt.piliapp.com/mysql-syntax-check/ ) para testar e essa query foi validada porém quando uso no meu bd local apresenta erro. Somente quando apago o LIMIT 5 que ela funciona. Não é possível buscar em uma só pesquisa 5 pessoas categoria 2 e 7 categoria 3 ?

2 respostas
solução!

Olá Marcos! Tudo bem? Você está usando o banco de dados MySQL correto? Então qual é a saída do comando? Qual o erro que o MySQL retorna? Talvez está funcionando quando você remove o "LIMIT 5" da consulta pelo fato de que você realiza a união das duas consultas em apenas uma, porém você determina um limite de 5 resultados na primeira parte da consulta e outro limite de 7 na segunda consulta, porém o MySQL está entendo essa query como uma grande consulta inteira, e no caso ele só aceita um dos "LIMIT", acho que você resolve isso usando parênteses para separar e aplicar o LIMIT individual para cada consulta, para isso tente executar a query assim:

(SELECT DISTINCT id, nome, categoria FROM tb_pessoas WHERE status = "a" AND categoria = 2 LIMIT 5)
 UNION 
(SELECT DISTINCT id, nome, categoria FROM tb_pessoas WHERE (status = "a" AND categoria = 3) LIMIT 7);

Veja se funciona, se não funciona coloca o retorno dessa query aqui pra gente poder ajudar!

acredito que foi exatamente isso, pois ao adicionar esses parênteses separando os SELECT a query funcionou. obrigado