elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 ... 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 [80] 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
791  Programación / Bases de Datos / Re: MySQL select con mas selects? en: 30 Septiembre 2009, 03:13 am
Analizandolo bien, te convendria un cursor mejor.

Admito que estoy debil en cursores en MySQL ya que me dedico mas al PL/SQL de Oracle que de MySQL, por ende tuve que buscar referencias de sintaxis de cursor en MySQL para guiarme. Esto a lo mejor te pueda ayudar (un analista programador podria convertir lo siguiente en sus necesidades):

Imaginate que tengo esta tabla y estos datos:

Código
  1.  
  2. mysql> SELECT * FROM juicio;
  3. +--------+---------+---------+---------+
  4. | id_jui | tip_jui | aut_jui | sal_jui |
  5. +--------+---------+---------+---------+
  6. |      1 |       1 |       1 |       4 |
  7. |      1 |       1 |       1 |       4 |
  8. |      1 |       1 |       1 |       4 |
  9. |      1 |       1 |       1 |      10 |
  10. |      1 |       1 |       1 |      10 |
  11. |      1 |       2 |       2 |      10 |
  12. |      1 |       2 |       2 |      10 |
  13. |      1 |       2 |       2 |      10 |
  14. |      1 |       2 |       2 |       4 |
  15. +--------+---------+---------+---------+
  16. 9 ROWS IN SET (0.00 sec)
  17.  
  18.  

Ahora creo un procedimiento almacenado con un cursor:

Código
  1.  
  2. mysql> delimiter /
  3. mysql>     CREATE PROCEDURE hongo(p1 INT, p2 INT, p3 INT)
  4.    ->     BEGIN                                        
  5.    ->     DECLARE terminado INT DEFAULT 0;              
  6.    ->     DECLARE b,c INT;                              
  7.    ->     DECLARE cur1 cursor FOR SELECT COUNT(id_jui) FROM `juicio` WHERE tip_jui = p1  AND     aut_jui = p1  AND sal_jui = p3;
  8.    ->     DECLARE cur2 cursor FOR SELECT COUNT(id_jui) FROM `juicio` WHERE tip_jui = p2  AND  aut_jui = p2  AND sal_jui = p3;
  9.    ->     DECLARE continue handler FOR sqlstate '02000' SET terminado = 1;                                                  
  10.    ->     OPEN cur1;                                                                                                        
  11.    ->     OPEN cur2;                                                                                                        
  12.    ->     repeat                                                                                                            
  13.    ->     fetch cur1 INTO b;                                                                                                
  14.    ->     SET @todo1 := b;                                                                                                  
  15.    ->     fetch cur2 INTO c;                                                                                                
  16.    ->     SET @todito1 := c;                                                                                                
  17.    ->     until terminado END repeat;                                                                                        
  18.    ->     close cur1;                                                                                                        
  19.    ->     close cur2;                                                                                                        
  20.    ->     END;                                                                                                              
  21.    ->     /                                                                                                                  
  22. Query OK, 0 ROWS affected (0.00 sec)                                                                                          
  23.  
  24. mysql> delimiter ;
  25.  
  26.  

Un procedimiento que soporta 3 parametros, dichos parametros pueden ir entre 1,1,10 o 2,2,4 como tu ejemplo expone, por ejemplo:

Código
  1.  
  2. mysql> CALL hongo(1,2,10);                                                                      
  3. Query OK, 0 ROWS affected (0.00 sec)
  4.  
  5. mysql> SELECT @todo1;
  6. +--------+
  7. | @todo1 |
  8. +--------+
  9. | 2      |
  10. +--------+
  11. 1 ROW IN SET (0.00 sec)
  12.  
  13. mysql> SELECT @todito1;
  14. +----------+
  15. | @todito1 |
  16. +----------+
  17. | 3        |
  18. +----------+
  19. 1 ROW IN SET (0.00 sec)
  20.  
  21. mysql> CALL hongo(2,2,4);
  22. Query OK, 0 ROWS affected (0.00 sec)
  23.  
  24. mysql> SELECT @todo1;
  25. +--------+
  26. | @todo1 |
  27. +--------+
  28. | 1      |
  29. +--------+
  30. 1 ROW IN SET (0.00 sec)
  31.  
  32. mysql> SELECT @todito1;
  33. +----------+
  34. | @todito1 |
  35. +----------+
  36. | 1        |
  37. +----------+
  38. 1 ROW IN SET (0.00 sec)
  39.  
  40.  
  41.  

Analizalo  :-*
792  Programación / Bases de Datos / Re: MySQL select con mas selects? en: 29 Septiembre 2009, 21:10 pm
Yo soy mala para comprender muchas veces lo que me preguntan...no eres unico  :P

Lo que ocurre que con la sentencia que te ofreci:

Código
  1.  
  2. SELECT COUNT(id_jui) AS total, sal_jui FROM `juicio` WHERE tip_jui BETWEEN 1 AND 2 AND  aut_jui BETWEEN 1 AND 2 AND sal_jui IN(4,10) LIMIT 1;
  3.  
  4.  

No te especifica cuando el dato pertenece a tip_jui = 1 o tip_jui = 2 la misma condicion aplica para aut_jui el no te dice cual pertenece a cual, aunque el resultado te lo presentara en pantalla. Tu lo que quieres es agregar en variables por cada condicion, podrias optar por un PL digase usar un bucle FOR y pasarle parametros para que cuente las condiciones y estas sean asignadas por ejemplo a 2 variables, un mero y ultra sencillo ejemplo:

Código
  1.  
  2. FOR parametro..2 LOOP
  3. SET @variable(parametro) := SELECT COUNT(id_jui) AS total, sal_jui FROM `juicio` WHERE tip_jui = parametro AND  aut_jui = parametro AND sal_jui IN(4,10) LIMIT 1;
  4.  
  5.  
  6.  

Es un mero ejemplo, la sintaxis no va asi pero ando un pelin rapida  ;)
793  Programación / Bases de Datos / Re: MySQL select con mas selects? en: 29 Septiembre 2009, 20:34 pm
Bueno desconozco la estructura de tu tabla pero... haz pensado utilizar BETWEEN?

Código
  1.  
  2. SELECT COUNT(id_jui) AS total, sal_jui FROM `juicio` WHERE tip_jui BETWEEN 1 AND 2 AND  aut_jui BETWEEN 1 AND 2 AND sal_jui=4 OR sal_jui=10 GROUP BY sal_jui ORDER BY sal_jui ASC LIMIT 1;
  3.  
  4.  

No se es una idea, sin saber que estas buscando con exactitud o como esta estructurada la tabla es poco lo que puedo ofrecer  :P  para pasarle tunning de indices a las consultas SQL recuerda utilizar 'EXPLAIN' para evaluar  ;)  te servira bastante para optimizaciones.
794  Programación / PHP / Re: ¿Que estoy haciendo mal?... (Sistema newsletter, problema al conectar a la DB) en: 29 Septiembre 2009, 02:02 am
No puedo ayudarte en abundancia, ya que el error puede ser variado... haz considerado revisar los logs que genera Apache respecto a esto? generalmente cuando tengo un fallo en algo de php o un cgi de perl o viceversa y no se donde esta el error, voy a los logs de error de Apache y alli me instruyo mas sobre que esta pasando  ;)  mira ver si te funciona.
795  Foros Generales / Foro Libre / Re: Linux es cada vez más malo en: 25 Septiembre 2009, 22:28 pm
Es entendible tu comentario, pero la sintaxis da a comprender que si tienen capacidad de cargar instrucciones en ram hablen... y todo lo que se ejecuta en un ordenador se carga en ram hasta que termine.

Sonaria mas claro el termino, si logran implementar un kernel que llame a una especie de init que cargue todas las instrucciones del SO a iniciar en memoria seria mas especifico es todo.
796  Foros Generales / Foro Libre / Re: Linux es cada vez más malo en: 25 Septiembre 2009, 22:16 pm
Citar
Les doy un premio si consiguen cargar instrucciones en RAM.

Enserio??? entonces empieza a comprar los regalos, porque me parece que hasta un simple 'Hola Mundo' de un programa al ejecutarse se carga en memoria.

Vas a tener que comprar muchosss regalos, si la unica condicion que colocas es que loquesea cargue en memoria   :P
797  Foros Generales / Foro Libre / Re: Linux es cada vez más malo en: 25 Septiembre 2009, 22:06 pm
Citar
por cierto..


XP arranca mas rapido que ubuntu 9.04


para aquellos que gusten comprobarlo

Si vamos a hacer este tipo de comparacion, seria favorable comparar cada sistema operativo vs otro sistema operativo lanzado en años similares. Recuerda que XP se lanzo mas o menos por el 2002 o 2004 no recuerdo, y Ubuntu 9.04 es algo reciente. Cuando un SO se lanza va acorde a el hardware actual del mercado, en aquel entonces el hardware era mas liviano que actualmente, por ende los requisitos de XP son minimos para cargar que lo que requiere un SO lanzado en tiempo reciente compatible a hardware reciente.

Si vamos a hacer este tipo de comparaciones, seamos justos:

cantidad de tiempo de duracion de booteo entre Ubuntu 9.04  vs Windows Vista  ;)  seria lo mas recomendable.
798  Foros Generales / Foro Libre / Re: Linux es cada vez más malo en: 25 Septiembre 2009, 21:43 pm
Ciertamente, la mayoria de distribuciones sobretodo las populares van en plena competencia una contra la otra para acaparrar mas usuario, y van en crecimiento muchas agregando aplicaciones y tonterias que relantizan, hacen vulnerable y mortifican el SO. Pero particularmente, esto es independiente a los cambios o el funcionamiento del kernel como tal.

Si es cierto que en la comunidad GNU/Linux hay mas soporte que en Windows, si verificas hay mas foros, programadores pendientes en corregir fallas del sistema completo (No de un simple service pack como Microsoft que parchea 2 aplicaciones del SO completo y el resto nada que se quede vulnerable). hay mas apoyo de este lado eso no lo dudo, tengo algun problema en Unix o Linux no lo puedo resolver y pregunto en algun foro, o chat o similar... y te aseguro que me responden y resuelvo rapidamente en menos de 2 dias aveces hasta 1. En el entorno Microsoft sobretodo mainframes quieres esto? deberas pagar una gran parte de plata para recibir soporte telefonico con unos ignorantes.

Citar
monolítico, compartiendo el espacio de usuario con el del kernel y la "comunicación" y adm entre procesos obviamente es mucho más lenta.


Compartir el espacio de usuario con el del kernel???

Esto hasta lo que se no es posible, seguramente estaras haciendo referencia a la implementacion del objeto LKM en el kernel de Linux que le otorga funcionalidad de hacer llamadas al sistema, carga y baja de modulos en tiempo real, etc etc... pero esto no implica que las funcionalidades que haga el kernel en su espacio son compartidas en el espacio de usuario  ;) 

799  Foros Generales / Foro Libre / Re: Sus escritorios en: 23 Septiembre 2009, 02:05 am
Slackware 13.0 con KDE 4.x  ;D  y los efectos nativos de KDE nada de compiz-fusion o similares mal impuestos sobre xorg.

800  Programación / Bases de Datos / Re: Tomar registros desde cierta posicion (MySQL) en: 12 Septiembre 2009, 21:19 pm
Y sobre la consulta en Oracle seria:

SELECT * FROM TABLA WHERE ROWNUM BETWEEN 2 AND 30

que tiene eso de complicado????? Es solo lenguaje SQL basado en el ANSI SQL
Páginas: 1 ... 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 [80] 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines