jump to navigation

Configuring FreeRADIUS for LDAP over SSL Authentication « Paul Gerard Porter 13/11/2014

Posted by Gonzalo Rosas in IT Workers.
add a comment

Configuring FreeRADIUS for LDAP over SSL Authentication « Paul Gerard Porter.

T-SQL Consultas con Pivot (referencias cruzadas parte 1) 20/01/2014

Posted by Gonzalo Rosas in Base de datos, IT Workers.
Tags: , ,
2 comments

Para mis alumnos del curso de BDA.
El sábado pasado me atoré con una consulta T-SQL en clase. Aquí les dejo dos soluciones. Pero me gustaría que me comentaran.

  1. ¿Cuál es el enunciado de la consulta?
  2. ¿Cuál de las dos alternativas les parece más sencilla?

Les prometo que en la semana les doy la explicación de cada una. 

Alternativa 1.
Select E.Escuela, IsNull(M.Mujeres,0) as Mujeres, IsNull(H.Hombres,0) as Hombres
From (   Select Escuela, count (curp) as Mujeres   
             From Becado   
             Where Substring (curp,11,1) = ‘M’   
             Group by Escuela  
) M  
right join  ( 
                  Select Distinct Escuela   
                  From Becado  
) E  
On M.Escuela = E.Escuela  
left join  ( 
                 Select Escuela, count (curp) as Hombres   
                 From Becado   
                 Where Substring (curp,11,1) = ‘H’   Group by Escuela  
) H  
On H.Escuela = E.Escuela  

 

Alternativa 2

Select Escuela,  M as Mujeres, H as Hombres
From (   
               Select Escuela, Substring (curp,11,1) as Genero, curp   
               From Becado     
          ) Origen
Pivot  ( 
                Count (Origen.curp) 
                For origen.Genero In (M,H)  
) as P;

 

Función en T-SQL para calcular la edad con base a la CURP 14/01/2014

Posted by Gonzalo Rosas in Base de datos, IT Workers.
Tags: , ,
4 comments

Los ejercicios de este cuatrimestre en Base de Datos para Aplicaciones, piden constantemente la edad para presentar una serie de datos, pero solo tenemos la curp para calcularla,es por eso que les dejo aquí un función en T-SQL para obtener la edad. Ya la había presentado en Oracle por lo que solo se hicieron algunos ajustes, espero les sirva. Si tienen una forma más simple para calcularla me lo hacen saber por favor.

Create function dbo.fEdadCurp (@Curp char(18))
Returns int
as
Begin
    Declare @Edad int;
    Declare @Año int;
    Declare @Mes int;
    Declare @Dia int;   
    Declare @AñoActual int;
    Declare @MesActual int;
    Declare @DiaActual int;   
   
    Set @AñoActual = Datepart(year,Getdate())
    Set @MesActual = Datepart(month,Getdate())
    Set @DiaActual = Datepart(day,Getdate())
   
    Set @Año = 1900+ Cast (Substring (@curp,5,2) as int);
    Set @Mes = Cast (Substring (@curp,7,2) as int);
    Set @Dia = Cast (Substring (@curp,9,2) as int);
   
    Set @Edad = @AñoActual-@Año-1;
   
    If @MesActual>= @Mes
    Begin
        If @DiaActual>=@Dia
        Begin
            Set @Edad = @Edad +1;
        End 
    End    
    Return (@Edad);
End;

Referencias:

http://msdn.microsoft.com/es-es/library/ms186755.aspx
http://blog.sqlauthority.com/2007/07/07/sql-server-convert-text-to-numbers-integer-cast-and-convert/
http://msdn.microsoft.com/es-es/library/ms174420.aspx
http://www.mssqltips.com/sqlservertip/1712/sql-server-function-to-convert-integer-date-to-datetime-format/

Creando funciones en SQL server 2008 R2 13/01/2014

Posted by Gonzalo Rosas in Uncategorized.
add a comment

Para la consulta 16 de la práctica Consultas avanzadas de BDA es adecuado crear una función que permita conocer la cantidad de alumnos que están becados en la Institución

Create function dbo.NoAlumnoEscuela (@Escuela varchar(60)) 
Returns int
As
Begin
    Return (Select COUNT(añoescolar)
                 From Becado
                 Where Escuela= @Escuela
                );
End

Es de resaltar cómo se utiliza la cláusula Return. La consulta quedaría de la siguiente manera.

Select AñoEscolar, COUNT(añoescolar)*100/dbo.NoAlumnoEscuela(‘B. I. N. E.’) as ‘Porcentaje de alumnos’
From Becado
Where Escuela= ‘B. I. N. E.’
Group by AñoEscolar

Referencias:

Create function.

SQL server eliminar espacios en blanco 13/01/2014

Posted by Gonzalo Rosas in Base de datos.
Tags: ,
1 comment so far

En la clase de hoy de BDA, nos topamos conque algunos de los datos de nuestras tablas tenían espacios en blanco y no permitían construir adecuadamente las consultas.

image

¿Ya vieron donde está la comilla de cierre del nombre de la escuela.? Esto es por que contiene espacios en blanco de más.

Solución.

Update Becado Set Escuela = RTRIM(Escuela)

Ahora sí podemos trabajar como Dios manda.

Saludos.

Referencias

http://msdn.microsoft.com/en-us/library/ms178660.aspx

Error en la conexión a una tabla en Oracle 28/10/2013

Posted by Gonzalo Rosas in Base de datos.
add a comment

Hola a todos.

Resulta que como práctica, estamos haciendo conexiones a un servidor Oracle 11g Express que se encuentra en una máquina remota, hemos abierto los puertos correspondientes y verificado que los permisos de acceso a la base de datos sean los correctos; entiendo que no es una buena práctica usar el usuario System para hacer consultas a las tablas y menos de manera remota, pero por ahora lo haremos así; resulta entonces que haciendo una consulta a la tabla employees de nuestra BD nos provoca el error «La tabla o vista no existe«, esto es falso, ya que la estamos viendo en el imagen de abajo, por un momento pensé que me habían jugado la broma y que habían borrado o modificado el nombre del tabla, pero ahí estaba.

La solución es más sencilla de lo que puedan imaginar, resulta que Oracle necesita que se le especifique el esquema donde se encuentra la tabla a consultar, por ejemplo Select * from HR.Employees y eso es todo.

Esto me deja de experiencia, para que en los próximos accesos de bases de datos sin importar el DBMS se le especifique el esquema de datos, aunque lo crea innecesario en algunos casos.

Byte.

prueba de link 11/12/2012

Posted by Gonzalo Rosas in Uncategorized.
add a comment

Documento de Lore

Función TEXTO en Excel 12/10/2012

Posted by Gonzalo Rosas in IT Workers.
add a comment

Hola a todos.

Resulta que necesitaba una serie de letreros con fecha abreviada con una estructura de: Semana X. 08-oct al 12-oct.

Son simplemente 8 letreros como esos, pero como soy fanático de la automatización, quise hacer una fórmula en Excel para dicha tarea. Entonces me tope con la función TEXTO que me fue de mucha utilidad, considerando que tenía los campos Número de semana, Fecha inicial y Fecha final.
La fórmula en la columna D quedó así =»Semana » &A3 & «. » &TEXTO(B3,»dd-mmm») & » al » & TEXTO(C3,»dd-mmm») & «.»

A B C D
Semana Lunes Viernes Fecha
1 08-oct 12-oct Semana 1. 08-oct al 12-oct.
2 15-oct 19-oct Semana 2. 15-oct al 19-oct.
3 22-oct 26-oct Semana 3. 22-oct al 26-oct.
4 29-oct 02-nov Semana 4. 29-oct al 02-nov.
5 05-nov 09-nov Semana 5. 05-nov al 09-nov.
6 12-nov 16-nov Semana 6. 12-nov al 16-nov.
7 19-nov 23-nov Semana 7. 19-nov al 23-nov.

¿Qué práctico no?

Mostrando datos en Mysql desde Java 04/08/2012

Posted by Gonzalo Rosas in Base de datos, UTIM.
add a comment

¿Por qué no muestra los datos este programa?

/**   
*  Ejemplo para la consulta de una  
*  base de datos de Mysql desde Java  
*/ 

package consola;
import java.sql.Connection;
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement;

/**  
* @author Grosas  
*  
*/ 

public class AccesoDb {
/**   
* @param args   
*/  

public static void main(String[] args) {   
  Connection conexion;   
  Statement comando;   
  ResultSet rs;   
  String scriptSQL;      

  probarDriverMysql ();   
  conexion = conectarBD ();      
  // Extrayendo datos de la BD     
  try {    
     comando = conexion.createStatement();    
     scriptSQL ="Select Idcerdo, identificador, nombre from cerdos";
    //Ejecutando la consulta;    
     rs = comando.executeQuery(scriptSQL);    
     while (rs.next()){     
           System.out.println(rs.getString(1) + "|" + rs.getString(2)+ "|" + rs.getString(3));    
     }           
     //cerrando la conexión    
     conexion.close();       
  } catch (SQLException e) {
     e.printStackTrace();   
  }
}

private static Connection conectarBD() {   
// TODO Método para conectar a la base de datos bajo las credenciales dadas.   
   Connection con;   
   try{    
      con = DriverManager.getConnection("jdbc:mysql://localhost/jazmin","Student1","Uim");    
      System.out.println("¡Ok!, Se se pudo conectar al servidor.");
   } catch (SQLException e){
      System.out.println("No se pudo conectar al sevidor");
    return null;
   }
   return con;  
}

private static void probarDriverMysql() {
   // TODO Método para probar si está instalado y configurado adecuadamente el driver Mysql
   try{    
       Class.forName("com.misql.jdbc.Driver");
       System.out.println("¡Ok!, Se encontró la clase.");
   } catch (Exception e){
       System.out.println("¡Error!, No se encontró la clase.");
       e.printStackTrace();
   }//catch
 }// probarDriverMysql
} // class