List:Spanish« Previous MessageNext Message »
From:Marta Pérez Romero Date:May 24 2010 11:12am
Subject:Re: Ayuda en query
View as plain text  
Jesús, Ewen,

Tan sencillo y no daba con ello!

Ahora funciona perfecto, mil gracias a los dos :)
Martape

2010/5/24 ewen fortune <ewen.fortune@stripped>

> Marta,
>
> Suponiendo:
>
> mysql> select * from marta;
> +-----------+-----------------+---------------+------------+
> | Client_id | account_manager | sales_manager | date       |
> +-----------+-----------------+---------------+------------+
> |         1 | fernandez       | rodriguez     | 2010-05-19 |
> |         1 | gomez           | dominguez     | 2010-05-17 |
> |         2 | gomez           | dominguez     | 2010-05-18 |
> |         2 | gomez           | dominguez     | 2010-05-17 |
> +-----------+-----------------+---------------+------------+
> 4 rows in set (0.00 sec)
>
> mysql> select Client_id,account_manager,sales_manager,max(date) as
> date from marta group by Client_id;
> +-----------+-----------------+---------------+------------+
> | Client_id | account_manager | sales_manager | date       |
> +-----------+-----------------+---------------+------------+
> |         1 | fernandez       | rodriguez     | 2010-05-19 |
> |         2 | gomez           | dominguez     | 2010-05-18 |
> +-----------+-----------------+---------------+------------+
> 2 rows in set (0.00 sec)
>
> Un saludo,
>
> Ewen
>
> 2010/5/24 Marta Pérez Romero <martape@stripped>:
> > Hola a todos,
> >
> > Estoy intentando hacer una query y no consigo el resultado que necesito.
> >
> > Imagino que será sencillo, pero no doy con ello :(
> >
> > A ver si se os ocurre alguna idea.
> >
> > Tengo una tabla donde se almacenan los datos de clientes.
> > En concreto los campos son:
> > Client_id; account_manager; sales_manager; date
> >
> > Se van guardando los datos de cada día, de modo que por ejemplo tengo un
> > listado como este:
> > Client_id; account_manager; sales_manager; date
> > 1; fernandez; rodriguez; 2010-05-19
> > 1; gomez; dominguez; 2010-05-17
> > 2; gomez; dominguez; 2010-05-18
> > 2; gomez; dominguez; 2010-05-17
> >
> > A mí lo que me interesa es que la query me devuelva el listado de
> registros
> > por cliente, pero solo el último día que ese cliente tiene un
> registro.
> >
> > Por ejemplo, en las tres filas que he pegado antes, hay dos líneas para
> el
> > cliente 1, una para el día 19 y otra para el día 17. De un
> día a otro el
> > account_manager y el sales_manager han cambiado.
> > Lo que yo quiero ver es quién es el account_manager y el sales_manager
> más
> > reciente.
> > En el cliente 2 hay también dos registros de dos días distintos,
> pero el
> > account_manager y el sales_manager no han cambiado.
> > Por lo tanto como resultado de la query me tendría que dar:
> >
> > Client_id; account_manager; sales_manager; date
> > 1; fernandez; rodriguez; 2010-05-19
> > 2; gomez; dominguez; 2010-05-18
> >
> > Es decir, la query toma la tabla original y dice: select cada client_id y
> > dame el account_manager y el sales_manager del último día en que
> haya un
> > registro para ese cliente.
> >
> > Hasta ahora la query sería algo así:
> >
> > SELECT client_management.Client_id, client_management.account_manager,
> > client_management.sales_manager, Max(client_management.Date) AS
> [MaxOfDate]
> > FROM client_management
> > GROUP BY client_management.Client_id, client_management.account_manager,
> > client_management.sales_manager
> > ORDER BY client_management.Client_id, Max(crm_am_test.Date) DESC;
> >
> > El problema es que esto me da como resultado:
> >
> > Client_id; account_manager; sales_manager; date
> > 1; fernandez; rodriguez; 2010-05-19
> > 1; gomez; dominguez; 2010-05-17
> > 2; gomez; dominguez; 2010-05-18
> >
> > Es decir, al agrupar los resultados por client_id, de forma correcta me
> > devuelve el cliente 2 solo una vez con los valores para el último
> día
> donde
> > hay datos (18 Mayo) y porque en la tabla original el cliente 2 tiene los
> > mismos valores de account_manager y sales_manager en ambos días en que
> > aparece.
> > Sin embargo, el cliente 1 aparece dos veces, ya que los valores de
> > account_manager y sales_manager han cambiado de un día a otro.
> >
> > Y sin embargo, yo no quiero que me salga el cliente 1 dos veces, sino
> solo
> > una línea por cada cliente que hay en la tabla original, con los valores
> de
> > account_manager y sales_manager en el último día en que hubo
> registros
> para
> > ese cliente.
> >
> > He intentado explicarme lo mejor posible, espero que se haya entendido.
> >
> > ¿Alguien tiene alguna sugerencia?
> >
> > Mil gracias,
> > Martape
> >
>

Thread
Ayuda en queryMarta Pérez Romero24 May
  • Re: Ayuda en queryJesús Gómez24 May
  • Re: Ayuda en queryewen fortune24 May
    • Re: Ayuda en queryMarta Pérez Romero24 May
      • Ayuda con charset collation o no se quemarcelo yornet26 May
  • Re: Ayuda con charset collation o no se queJuan Vallini26 May