Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: EscobarCamilo en 27 de Julio 2015, 16:30

Título: MySql Autonumerar o contar registros que cumplen una condición where
Publicado por: EscobarCamilo en 27 de Julio 2015, 16:30
Buenos días a todos: Agredezco de antemano su colaboración.

Tengo una tabla en la que hay registros repetidos (ciudad), y necesito numerarlos así:

nombre                ciudad               No.

Camilo                 Bogotá               1
Andres                Bogotá                2
Gustavo              Medellín              1
Francisco             Bogotá                3
Angela                 Medellín              2

Y que cuando elimine algun registro se actualice esa numeración de la coluimna (No.)

No sé si se hace directamente con php en un array o en mysql en una tabla temporal, la verdad es que estoy aprendiendo hasta ahora esto y es la segunda vez que estoy en el foro y ando bien perdido. Si me pueden colaborar o darme una luz de como hacerlo les agradezco mucho. Un abrazo.
Título: Re:MySql Autonumerar o contar registros que cumplen una condición where
Publicado por: César Krall en 28 de Julio 2015, 18:34
Hola Camilo, si solo necesitas saber el número de registros que cumplen una condición en la base de datos (es decir, saber si hay por ejemplo 17 registros cuya ciudad es Medellín) lo más fácil es usar una consulta count.

Código: [Seleccionar]
SELECT COUNT(*), ciudad FROM usuarios WHERE `ciudad` = "Barcelona"
Nos devolvería el número de registros de la tabla usuarios donde el campo ciudad es Barcelona. El resultado podría ser como este:

COUNT(*)    ciudad
45           Barcelona


Esto significaría que hay 45 registros donde la ciudad es Barcelona.


También tienes opción a realizar una consulta donde cada una de las apariciones de la ciudad quede numerada:


Código: [Seleccionar]
SELECT  l.ciudad,
        @curRow := @curRow + 1 AS row_number
FROM    usuarios l
JOIN    (SELECT @curRow := 0) r
WHERE   l.ciudad = "Barcelona";


El resultado de esta consulta sería parecido a:

 ciudad    row_number
Barcelona    1
Barcelona    2
Barcelona    3
Barcelona    4

Tantas filas como veces aparezca la ciudad buscada.


Si además del nombre de ciudad quieres que aparezca el resto de la información de la tabla puedes usar:

Código: [Seleccionar]
SELECT  l.*,
        @curRow := @curRow + 1 AS row_number
FROM    usuarios l
JOIN    (SELECT @curRow := 0) r
WHERE   l.ciudad = "Barcelona";

En este caso el resultado sería parecido a

nombre                ciudad               row_number

Camilo                Bogotá               1
Andres                Bogotá               2
Francisco             Bogotá               3


Esto puedes combinarlo con una consulta previa para saber cuáles son las ciudades existentes en la base de datos, por ejemplo

Código: [Seleccionar]
SELECT DISTINCT ciudad
FROM usuarios

Te devolvería

Bogotá
Medellín
Cali
etc.

Saludos!
Título: Re:MySql Autonumerar o contar registros que cumplen una condición where
Publicado por: EscobarCamilo en 28 de Julio 2015, 18:58
César, muchas gracias por tu respuesta. Muy completa y efectiva. Esto es lo que necesitaba. Bendiciones. Ya estaba perdiendo las esperanzas.  Graciassssss!! por compartir tu conocimiento......  Funcionó!!!  :)