Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ultimos registros de 3 columnas de una tabla

Estas en el tema de ultimos registros de 3 columnas de una tabla en el foro de Mysql en Foros del Web. muy buenas tengo ke realizar una consulta y no encuentro como hacerla. me explico, tengo una tabla y dentro de ella varias columnas y kiero ...
  #1 (permalink)  
Antiguo 08/06/2012, 07:27
 
Fecha de Ingreso: septiembre-2010
Ubicación: Reino Independiente Suizo_Andaluz (RISA)
Mensajes: 221
Antigüedad: 13 años, 7 meses
Puntos: 24
ultimos registros de 3 columnas de una tabla

muy buenas
tengo ke realizar una consulta y no encuentro como hacerla.
me explico, tengo una tabla y dentro de ella varias columnas y kiero consultar
los 2 ultimos registros de 3 columnas diferentes.
es posible hacer esto en una sola consulta o tendria ke hacer una por cada columna, y por supuesto como lo hago

venga, saludos y muchas gracias
__________________
kolectivo grafico deNA
www.kgdena.com
  #2 (permalink)  
Antiguo 08/06/2012, 11:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ultimos registros de 3 columnas de una tabla

En bases de datos el concepto dos ultimos registros no tiene mucho sentido deberias aclarar con respeto a que quieres los ultimos registros

SELECT *
FROM tabla
ORDER BY nombreColumna DESC
LIMIT 2;

Esto da los ultimos 2 registros ordenando por "nombreColumna"


SELECT *
FROM tabla
ORDER BY nombreColumna1 DESC,nombreColumna2 DESC
LIMIT 2;

Esto da los ultimos 2 registros ordenando por "nombreColumna1,nombreColumna2"

etc...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 08/06/2012, 14:43
 
Fecha de Ingreso: septiembre-2010
Ubicación: Reino Independiente Suizo_Andaluz (RISA)
Mensajes: 221
Antigüedad: 13 años, 7 meses
Puntos: 24
Respuesta: ultimos registros de 3 columnas de una tabla

primero de todo gracias por la respuesta pero creo ke no me he explicado muy bien kizas
tengo una tabla y en esa tabla varias columnas, digamos col1, col2...col5
entonces lo ke kiero es hacer una consulta en la ke me diga los dos ultimos registros o productos añadidos a la col1, los dos ultimos de la col2 e igual con la col3
bueno espero ke ahora este mas claro expresado

saludos y gracias de antemano
__________________
kolectivo grafico deNA
www.kgdena.com
  #4 (permalink)  
Antiguo 08/06/2012, 15:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ultimos registros de 3 columnas de una tabla

Dos detalles:
1) ¿Podría postear la estructura de esa tabla y decirnos cómo haces para determinar el orden de las cosas en una columna dada? Lo que describes no se parece a una tabla de una base de datos.
2) Trata de no escribir en SMS. Aquí no te vamos a cobrar por poner todas las letras de las palabras, y resulta un poco molesto usar el lenguaje de los celulares...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/06/2012, 17:24
Avatar de Nuc134rB0t  
Fecha de Ingreso: junio-2012
Ubicación: Venezuela
Mensajes: 6
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: ultimos registros de 3 columnas de una tabla

La sentencia es la que dice quimfv, solo que tienes que cambiar el * por el nombre de las columnas que desear ver, separadas por comas.

Código MySQL:
Ver original
  1. SELECT col1, col2, col3
  2. FROM tabla
  3. ORDER BY nombreColumna DESC

Código MySQL:
Ver original
  1. SELECT col1, col2, col3
  2. FROM tabla
  3. ORDER BY nombreColumna1 DESC,nombreColumna2 DESC



Tambie puedes cambiarle el nombre a la columna si es necesario para el momento de la consulta. Esto lo puedes lograr escribiendo el nuevo nombre, al lado del nombre de la columna, antes de la coma.


Código MySQL:
Ver original
  1. SELECT col1 Resultado1, col2 Resultado2, col3 Resultado3
  2. FROM tabla
  3. ORDER BY nombreColumna DESC
  #6 (permalink)  
Antiguo 09/06/2012, 02:00
 
Fecha de Ingreso: septiembre-2010
Ubicación: Reino Independiente Suizo_Andaluz (RISA)
Mensajes: 221
Antigüedad: 13 años, 7 meses
Puntos: 24
Respuesta: ultimos registros de 3 columnas de una tabla

gracias de nuevo a todos
creo que olvide comentar que para determinar el orden de los registros utilizo otra columna llamada id que es autoincrementable.

de todas formas en cuanto salga del curro probare la opcion de Nuc
__________________
kolectivo grafico deNA
www.kgdena.com
  #7 (permalink)  
Antiguo 09/06/2012, 16:55
 
Fecha de Ingreso: septiembre-2010
Ubicación: Reino Independiente Suizo_Andaluz (RISA)
Mensajes: 221
Antigüedad: 13 años, 7 meses
Puntos: 24
Respuesta: ultimos registros de 3 columnas de una tabla

muy buenas de nuevo
pues dandole vueltas ahora tengo que cambiar la consulta a otra aun mas dificil (para mi)
tengo una tabla con varias columnas, donde la columna ID es la autoincrmentable y luego tengo otra columna que se llama CATEGORIA y que tiene 3 opciones KLE, ACC y DEK, y la consulta seria la siguiente:
necesito saber los dos ultimos registros o articulos añadidos en la columna CATEGORIA de cada una de las 3 opciones, osea 6 respuestas, 2 de KLE, 2 de ACC y 2 de DEK

bueno espero que esta vez me haya explicado mejor y me podais ayudar
__________________
kolectivo grafico deNA
www.kgdena.com
  #8 (permalink)  
Antiguo 10/06/2012, 06:19
 
Fecha de Ingreso: septiembre-2010
Ubicación: Reino Independiente Suizo_Andaluz (RISA)
Mensajes: 221
Antigüedad: 13 años, 7 meses
Puntos: 24
Respuesta: ultimos registros de 3 columnas de una tabla

bueno encontre la solucion asi:

"(select * from recilocas where categoria like 'acc' order by id desc limit 0,2) union (select * from recilocas where categoria like 'kle' order by id desc limit 0,2) union (select * from recilocas where categoria like 'dek' order by id desc limit 0,2)"

pero ahora me ha aparecido otro problema, el numero de id me lo muestra sin ceros, me explico, el ID son siempre 3 digitos por ejemplo el primero es 001, luego 002....
pues el problema es que con esta consulta para las ID me da el resultado sin los 0 (1,2....).

no se donde puede estar el error pues si hago una consulta simple tipo
"select * from recilocas where categoria like 'acc' order by id desc limit 0,2"

el resultado esta bien con los 0 ( 001, 002....)

esta es la estructura de la tabla:

-- Estructura de tabla para la tabla `recilocas`
--

CREATE TABLE IF NOT EXISTS `recilocas` (
`id` int(3) unsigned zerofill NOT NULL AUTO_INCREMENT,
`categoria` varchar(3) NOT NULL,
`nombre` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=18 ;


bueno espero que alguien me pueda ayudar
gracias de antemano
__________________
kolectivo grafico deNA
www.kgdena.com
  #9 (permalink)  
Antiguo 12/06/2012, 22:35
 
Fecha de Ingreso: septiembre-2010
Ubicación: Reino Independiente Suizo_Andaluz (RISA)
Mensajes: 221
Antigüedad: 13 años, 7 meses
Puntos: 24
Respuesta: ultimos registros de 3 columnas de una tabla

por favor, no hay ningun alma caritativa que me eche un cable con la ultima cuestion?

venga, saludos y gracias
__________________
kolectivo grafico deNA
www.kgdena.com
  #10 (permalink)  
Antiguo 13/06/2012, 00:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ultimos registros de 3 columnas de una tabla

zerofill debería solucionarlo....

Si no puedes formatear el numero con programación externa ... o


Código MySQL:
Ver original
  1. SELECT if(sbc.id<10,concat("00",sbc.id),if(sbc.id<100,contat("0",sbc.id),sbc.id)) as idF,
  2.  ...resto de campos...
  3. ((select * from recilocas where categoria like 'acc' order by id desc limit 0,2)
  4. (select * from recilocas where categoria like 'kle' order by id desc limit 0,2)
  5. (select * from recilocas where categoria like 'dek' order by id desc limit 0,2)) as sbc

No es muy elegante y si llegas a 999 tendras preblemas....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #11 (permalink)  
Antiguo 13/06/2012, 08:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ultimos registros de 3 columnas de una tabla

Probemos otra opción:
Código MySQL:
Ver original
  1. SELECT RPAD(ID, '0', 3) ID, CATEGORIA, NOMBRE
  2.     (SELECT MAX(ID) ID, CATEGORIA, NOMBRE
  3.     FROM RECILOCAS
  4.     WHERE ID NOT IN (SELECT MAX(ID) ID FROM RECILOCAS GROUP BY CATEGORIA)
  5.     GROUP BY CATEGORIA
  6.     UNION
  7.     SELECT MAX(ID) ID, CATEGORIA, NOMBRE
  8.     FROM RECILOCAS
  9.     GROUP BY CATEGORIA
  10.     ORDER BY CATEGORIA, ID) T1;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 13/06/2012, 22:40
 
Fecha de Ingreso: septiembre-2010
Ubicación: Reino Independiente Suizo_Andaluz (RISA)
Mensajes: 221
Antigüedad: 13 años, 7 meses
Puntos: 24
Respuesta: ultimos registros de 3 columnas de una tabla

gracias a ambos, en cuanto llegue esta noche del curro lo pruebo

mil gracias hermanos, un saludo
__________________
kolectivo grafico deNA
www.kgdena.com
  #13 (permalink)  
Antiguo 17/06/2012, 03:37
 
Fecha de Ingreso: septiembre-2010
Ubicación: Reino Independiente Suizo_Andaluz (RISA)
Mensajes: 221
Antigüedad: 13 años, 7 meses
Puntos: 24
Respuesta: ultimos registros de 3 columnas de una tabla

pues sera que soy muy torpe pero nada, con ambas consultas siempre me sale "fallo de consulta"
si en el php pongo una consulta sencilla tipo
"select * from recilocas where categoria like 'acc' order by id desc";
funciona perfectamente, pero si pongo los codigos que me habeis facilitado siempre falla

se os ocurre cual puede ser el fallo?
venga, muchas gracias
__________________
kolectivo grafico deNA
www.kgdena.com
  #14 (permalink)  
Antiguo 17/06/2012, 06:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ultimos registros de 3 columnas de una tabla

"Fallo de consulta" no es un mensaje propio de MySQL, parece más bien algo que has programado tu en la aplicación.
Deberías capturar el que devuelve MySQL. O al menos el numero de error.
Que nos digas que la consulta te falla, sin esa información no ayuda a solucionar nada, porque no sabemos por donde empezar a revisar, o si realmente es un "error de consulta", y no un defecto de lógica o datos.
El que una consulta simple te funcione no significa absolutamente nada. Eso siempre va a andar, por lo que es irrelevante para el tema.
Postea dos cosas:
1) El código SQL exacto que estás usando, incluyendo un ejemplo de datos de pruebas usadas.
2) El número y/o mensaje de error que MySQL devuelve.

Dos tips:
1) Si MySQL no devuelve error, pero no obtienes datos, no existe error: Es que no hay datos que cumplan la condición.
2) No uses
Código MySQL:
Ver original
  1. LIKE 'palabra'
, es una perdida de tiempo porque si no usas los comodines (%), es lo mismo que escribir "=", y el "=" es más eficiente en ese caso.

Es decir, esto no tiene utilidad:

Código MySQL:
Ver original
  1. FROM recilocas
  2. WHERE categoria LIKE 'acc'
Es igual que escribir:
Código MySQL:
Ver original
  1. FROM recilocas
  2. WHERE categoria = 'acc'
Sólo que la segunda funciona mejor.

En todo caso deberías usar:
Código MySQL:
Ver original
  1. FROM recilocas
  2. WHERE categoria LIKE '%acc%'
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 17/06/2012 a las 06:56

Etiquetas: columnas, registros, tabla, ultimo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:29.