List:Spanish« Previous MessageNext Message »
From:ewen fortune Date:May 24 2010 11:00am
Subject:Re: Ayuda en query
View as plain text  
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