Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/08/2012, 15:58
wlinker
 
Fecha de Ingreso: agosto-2012
Mensajes: 39
Antigüedad: 12 años, 7 meses
Puntos: 5
Pregunta Como puedo realizar una consulta cruzada entre dos tablas?

Bien, tengo una duda y agradeceré enormemente a quien pueda ayudarme...

necesito realizar lo siguiente:

Contar el total de registros de una vista (o tabla, en mi caso ya es una vista):

Código SQL:
Ver original
  1. SELECT COUNT(*) FROM vista_general_personas

el resultado de ese count lo quiero combinar o cruzar como se interprete una segunda consulta, del tipo:

SELECT * FROM vista_general_personas LIMIT 30 OFFSET (resultadocount)-30

he pasado por separado las consultas desde PHP y si me funciona, pero es una consulta muy lenta, porque estoy evaluando arriba de 140mil registros y ésta sigue creciendo cada día, lo que necesito es mostrar los últimos 30 registros de la base de datos a manera de resumen en una página, pero hacer un clásico ORDER BY id DESC Limit 30 consume mucho tiempo y deseo optimizarlo, hice algunas pruebas desde PHP y me funciona como ya lo mencioné, pero ahora quiero hacer un SP o una Función que viva en el servidor, para ello buscando información trataba de hacer lo siguiente:


Código SQL:
Ver original
  1. DELIMITER $$
  2. DROP FUNCTION IF EXISTS totales $$
  3. CREATE FUNCTION totales()
  4. BEGIN
  5.     DECLARE t INT;
  6.     SELECT COUNT(*) INTO t FROM vista_general_personas;
  7.  
  8. SET @valor = t - 30;   
  9. SELECT * FROM vista_general_personas LIMIT 30 OFFSET valor;
  10.  
  11. END $$
  12. DELIMITER ;

pero no lo pude hacer funcionar, se que debe estar mal, pero no se como solucionarlo, agradecería su apoyo a cualquiera que pudiera apoyarme, muchas gracias.