Fórum retornar de uma consulta mysql, uma quantidade x de linhas para determinado registro de uma coluna #524159
26/06/2015
0
ola.
Preciso finalizar minha query, porém não estou conseguindo limitar as linhas a serem retornadas.
Eu tenho uma tabela com varias colunas onde uma delas é o 'setor'. Preciso que a consulta retorne apenas 3 linhas para cada setor.
Abaixo segue o código da consulta que desenvolvi, porem não sei como aplicar essa limitação de linhas para o setor. Se puderem me ajudar, desde já agradeço!
Obs: Utilizo o MySql
link do sql_fiddle onde construi uma pequena tabela para testar e exemplificar : http://sqlfiddle.com/#!9/4e4ef/3
Preciso finalizar minha query, porém não estou conseguindo limitar as linhas a serem retornadas.
Eu tenho uma tabela com varias colunas onde uma delas é o 'setor'. Preciso que a consulta retorne apenas 3 linhas para cada setor.
Abaixo segue o código da consulta que desenvolvi, porem não sei como aplicar essa limitação de linhas para o setor. Se puderem me ajudar, desde já agradeço!
Obs: Utilizo o MySql
link do sql_fiddle onde construi uma pequena tabela para testar e exemplificar : http://sqlfiddle.com/#!9/4e4ef/3
SELECT
*
FROM
servicos_encerrados
WHERE
atividade in("INST ADSL","INST FIXO")
Gisely Santos
Curtir tópico
+ 0
Responder
Posts
26/06/2015
Randrade
Bom Gisely, você pode utilizar uma Sub Consulta para retornar os dados, e fazer uma cláusula no WHERE para limitar a quantidade. Ficaria assim o seu código:
Segue um exemplo no SqlFiddle.
No WHERE <= 3 (menor ou igual a 3), você limita a quantidade de dados que irão retornar por setor (que dei o alias de rn).
Caso não seja isso que queira, ou precise de mais explicação, basta avisar.
SELECT
id, estado_atividade, macro_atividade, inicio_execucao, fim_execucao,
nome_cliente, setor
FROM
(
SELECT
id, estado_atividade, macro_atividade, inicio_execucao, fim_execucao,
nome_cliente, setor,
@rn := IF(@prev = setor, @rn + 1, 1) AS rn,
@prev := setor
FROM servicos_encerrados
JOIN (SELECT @prev := NULL, @rn := 0) AS vars
ORDER BY setor
) AS T1
WHERE rn <= 3
Segue um exemplo no SqlFiddle.
No WHERE <= 3 (menor ou igual a 3), você limita a quantidade de dados que irão retornar por setor (que dei o alias de rn).
Caso não seja isso que queira, ou precise de mais explicação, basta avisar.
Responder
Gostei + 0
26/06/2015
Gisely Santos
Olha, na verdade funcionou perfeitamente. Mas a nível de conhecimento poderia se possível me explicar o código? Principalmente a parte da utilização das variáveis na sub consulta? Desde já agradeço muitíssimo!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)