Maestros del Web


Estás en Inicio / Editorial / Bases de Datos

01.08.2003

Tutorial de SQL, Anexos

Anexos del Tutorial de SQL y resolución de problemas

16 ANEXOS

16.1 Resolución
de Problemas

16.1.1 Buscar
Información duplicada en un campo de una tabla.

Para generar este tipo de consultas lo
más sencillo es utilizar el asistente de consultas de Access,
editar la sentencia SQL de la
consulta y pegarla en nuestro código. No obstante este tipo de consulta
se consigue de la siguiente forma:

SELECT DISTINCTROW Lista de Campos a Visualizar FROM Tabla
WHERE CampoDeBusqueda In (SELECT CampoDeBusqueda FROM Tabla As psudónimo
GROUP BY CampoDeBusqueda HAVING Count(*)>1 ) ORDER BY CampoDeBusqueda;

Un caso práctico, si deseamos localizar
aquellos empleados con igual nombre y visualizar su código correspondiente,
la consulta sería la siguiente:

SELECT DISTINCTROW Empleados.Nombre, Empleados.IdEmpleado
FROM Empleados WHERE Empleados.Nombre In (SELECT Nombre FROM
Empleados As Tmp GROUP BY Nombre HAVING Count(*)>1)
ORDER BY Empleados.Nombre;

16.1.2 Recuperar Registros de una tabla
que no contengan registros relacionados en otra.

Este tipo de consulta se emplea en situaciones
tales como saber que productos no se han vendido en un determinado periodo de
tiempo,

SELECT DISTINCTROW Productos.IdProducto, Productos.Nombre FROM Productos
LEFT JOIN Pedidos ON Productos.IdProducto = Pedidos.IdProduct WHERE
(Pedidos.IdProducto Is Null) AND (Pedidos.Fecha Between #01-01-98# And
#01-30-98#);

La sintaxis es sencilla, se trata de realizar
una unión interna entre dos tablas seleccionadas mediante un LEFT
JOIN
, estableciendo como condición que el campo relacionado
de la segunda sea Null.

16.2 Utlizar
SQL desde Visual Basic

Existen dos tipos de consultas SQL:
las consultas de selección (nos devuelven datos) y las consultas de acción
(aquellas que no devuelven ningún registro). Ambas pueden ser tratadas
en Visual Basic pero de forma diferente.

Las consultas de selección se ejecutan
recogiendo la información en un recordset previamente definido mediante
la instrucción openrecordset(),
por ejemplo:

Dim SQL as String
Dim RS as recordset

SQL = "SELECT * FROM Empleados;"
Set RS=MiBaseDatos.OpenRecordSet(SQL)

Si la consulta de selección se
encuentra almacenada en una consulta de la base de datos:

Set RS=MiBaseDatos.OpenRecordset("MiConsulta")

Las consultas de acción, al no
devolver ningún registro, no las podemos asignar a ningún recordset,
en este caso la forma de ejecutarlas es mediante los métodos Execute
y ExecuteSQL (para bases de datos
ODBC), por ejemplo:

Dim SQL as string
SQL = "DELETE * FROM Empleados WHERE Categoria = 'Ordenanza';"
MiBaseDatos.Execute SQL

16.3 Funciones de Visual Basic utilizables
en una Instrucción SQL

Función Sintaxis Descripción
Now Variable= Now Devuelve la fecha y la hora actual del sistema
Date Variable=Date Devuelve la fecha actual del sistema
Time Variable=Time Devuelve la hora actual del sistema
Year Variable=Year(Fecha) Devuelve los cuatro dígitos correspondientes
al año de Fecha
Month Variable=Month(Fecha) Devuelve el número del mes del parámetro
fecha.
Day Variable=Day(Fecha) Devuelve el número del día del
mes del parámetro fecha.
Weekday Variable=Weekday(Fecha) Devuelve un número entero que representa
el día de la semana del parámetro fecha.
Hour Variable=Hour(Hora) Devuelve un número entre 0 y 23 que
representa la hora del parámetro Hora.
Minute Variable=Minute(Hora) Devuelve un número entre 0 y 59 que
representa los minutos del parámetro hora.
Second Variable=Second(Hora) Devuelve un número entre 0 y 59 que
representa los segundos del parámetro hora.

DatePart

Esta función devuelve una parte
señalada de una fecha concreta. Su sintaxis es:

DatePart(Parte, Fecha, ComienzoSemana,
ComienzoAño)

Parte representa a la porción de
fecha que se desea obtener, los posibles valores son:

Valor Descripción
yyyy Año
q Trimestre
m Mes
y Día del
año
d Día del
mes
w Día de
la semana
ww Semana del año
h Hora
m Minutos
s Segundos

ComienzoSemana indica el primer día de la semana. Los posibles valores son:

Valor Descripción
0 Utiliza el valor
pode efecto del sistema
1 Domingo (Valor
predeterminado)
2 Lunes
3 Martes
4 Miércoles
5 Jueves
6 Viernes
7 Sábado

ComienzoAño indica cual es la primera semana del año; los posibles valores son:

Valor Descripción
0 Valor del sistema
1 Comienza el año
el 1 de enero (valor predeterminado).
2 Empieza con la
semana que tenga al memos cuatro días en el nuevo año.
3 Empieza con la
semana que esté contenida completamente en el nuevo año.

16.4 Evaluar valores antes de ejecutar la Consuta.

Dentro de una sentencia SQL podemos emplear la función iif para
indicar las condiciones de búsqueda. La sintaxis de la función iif es la siguiente:

iif(Expresion,Valor1,Valor2)

En donde Expresión es
la sentencia que evaluamos; si Expresión es verdadera entonces
se devuelve Valor1, si Expresión es falsa se devuelve
Valor2.

SELECT * Total FROM Empleados WHERE Apellido =
iff(TX_Apellido.Text <> ”, TX_Apellido.Text, *) ;

Supongamos que en un formulario tenemos
una casilla de texto llamada TX_Apellido. Si cuando ejecutamos esta
consulta la casilla contiene algún valor se devuelven todos los empleados
cuyo apellido coincida con el texto de la casilla, en caso contrario se devuelven
todos los empleados.

<preSELECT Fecha, Producto, Cantidad, (iif(CodigoPostal>=28000 And
CodigoPostal <=28999,'Madrid','Nacional')) AS Destino FROM Pedidos;

Esta consulta devuelve los campos Fecha,
Nombre del Producto y Cantidad
de la tabla pedidos, añadiendo
un campo al final con el valor Madrid si el código posta está dentro del intervalo, en caso contrario devuelve Nacional.

16.5 Un Pequeño Manual de Estilo

Siempre es bueno intentar hacer las cosas
de igual modo para que el mantenimiento y la revisión nos sea una labor
lo más sencilla posible. En lo que a mi respecta utilizo las siguiente
normas a la hora de elaborar sentencias SQL:

  1. Las cláusulas siempre las escribo
    con Mayúsculas.
  2. Los operadores lógicos de sentencias
    siempre con Mayúsculas.
  3. Las operaciones siempre la primera
    letra con mayúsculas y el resto en minúsculas.
  4. Los operadores lógicos incluidos
    en otros operadores la primera letra con mayúsculas y el resto con
    minúsculas.

Los Nombres de las Tablas, Campos y Consultas,
los escribo siempre la primera letra con mayúsculas y el resto con minúsculas,
en algunos casos utilizo el carácter "_" para definir mejor
el nombre: Detalles_Pedidos.

Aunque con el motor Jet se pueden utilizar
acentos y espacios en blanco para nombrar los campos, las tablas y las consultas
no los utilizo porque cuando se exportar tablas a otros sistemas los acentos
y los espacios en blanco pueden producir errores innecesarios.

Recuerda siempre que si utilizas espacios
en blanco para llamar tablas o consultas cada vez que hagas referencias a ellos
en una consulta debes incluir sus nombres entre corchetes.

SELECT [ID de Pedido], [Nombre del
      Producto], Cantidad FROM [Detalles del Pedido];

Más información

Asegurate de revisar el foro de Bases de datos en Foros del Web para resolución de cualquier duda.

banner

  1. Introducción
  2. Consultas
    de Selección
  3. Criterios
    de Selección
  4. Agrupamiento
    de Registros y Funciones Agregadas
  5. Consultas
    de Actualización
  6. Tipos
    de Datos
  7. SubConsultas
  8. Consultas
    y Referencias Cruzadas
  9. Consultas
    de Unión Interna
  10. Consultas
    de Unión Externas
  11. Estructuras
    de las Tablas
  12. Consultas
    con Parámetros
  13. Acceso
    a las Bases de Datos Externas
  14. Omitir los permisos de ejecución
  15. La
    Cláusula Procedure
  16. Anexos

Califica esta nota:

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (11 votos, promedio: 5 de 5)
Loading ... Loading ...

Sobre el autor

Claudio Casares
Redactor del tutorial de SQL

Si eres nuevo en Maestros del Web y te agradan nuestras publicaciones, te invitamos a suscribirte a nuestro Feed.

Sindícanos en: Google Reader, Bloglines, My Yahoo o My MSN | ¿Qué es el Feed?

Comentarios

34 comentarios en total.

  1. Juan Gilberto Becerra Sal 30.11.2006 - 17:14 - #

    ami pareser esta pgina esmuy importante porque nos ayuda con a conoser los terminos del sql y que siga asi adelante poniendo mas informacion y felicitarle al dueñops
    suerte

  2. CARLOS 23.12.2006 - 11:09 - #

    hola amigo claudio para felicitarte por el tutorial sql que es de primera por fabor me podrias ayudar tengo un problema que comando puedo utilizar para lo siguiente: cuando en excel se suma cantidades por ejemplo 2.59
    6.79
    3.12
    12.51
    sale 12.51 porque esta asumiendo los otros digitos (2.5927+6.7895+3.123=12.5052)
    pero si tu lo sumas a la vista deveria salir 12.50 por servicio abra un comando donde luego de ya sea multiplicar o dividir una cantidad por otra y que al momento de sumar o restar solo asuma el entero y solo dos decimales para que salga exacto la operacion muchas gracias feliz naviad y año nuevo que la pases bien responder al correo carvalfar@hotmail.com.pe

  3. CARLOS 23.12.2006 - 11:13 - #

    hola amigo claudio para felicitarte por el tutorial sql que es de primera por fabor me podrias ayudar tengo un problema que comando puedo utilizar en sql para lo siguiente: cuando se suma cantidades por ejemplo
    2.59
    6.79
    3.12
    12.51
    sale 12.51 porque esta asumiendo los otros digitos (2.5927+6.7895+3.123=12.5052)
    pero si tu lo sumas a la vista deveria salir 12.50 por servicio abra un comando donde luego de ya sea multiplicar o dividir una cantidad por otra y que al momento de sumar o restar solo asuma el entero y solo dos decimales para que salga exacto la operacion muchas gracias feliz naviad y año nuevo que la pases bien responder al correo carvalfar@hotmail.com.pe

  4. liliana 05.01.2007 - 12:50 - #

    felicidades por compartir tus conocimientos a los demas

  5. edith 05.01.2007 - 13:13 - #

    parece q esta interesante pero nose si puedas agregar sql en powerbuilder

  6. Walter Paz 18.01.2007 - 15:26 - #

    Te felicito por el tutorial que tienes me parece bastante comprensible y practico. gracias por compartir tus conocimientos.

  7. Arturo 20.01.2007 - 20:04 - #

    Es un artículo muy bien redactado por ende de fácil comprensión.
    Gracias por impartir tus conocimientos.

  8. Edgar 22.01.2007 - 22:23 - #

    muy buen curso!
    recomendado ampliamente

  9. Ronald Valle 02.02.2007 - 08:36 - #

    te felicito por ayudarnos…

  10. Tania 07.02.2007 - 10:44 - #

    Muchísimas Gracias por tu ayuda.
    Dios te Bendiga

  11. Tania 12.02.2007 - 09:39 - #

    hola, antes que nada quisiera agradecerte por tu publicacion, y preguntarte si es que por medio de aqui, puedes resolver nuestras dudas,
    gracias de antemano

  12. samuel chaparro 20.02.2007 - 00:44 - #

    Deseo saber como obtener el número de días verdadero de un mes dado de una fecha determinada. Por ejemplo cuantos días tiene el mes de febrero del año 2023.

  13. samuel chaparro 20.02.2007 - 00:45 - #

    Deseo saber como obtener el número de días verdadero de un mes dado de una fecha determinada. Por ejemplo cuantos días tiene el mes de febrero del año 2023.

  14. Wendy S 02.03.2007 - 11:32 - #

    Gracias por tomarte el tiempo y compartir lo que sabes

  15. Alex 12.03.2007 - 09:03 - #

    hola: ¿Còmo puedo visualiar una tabla? o sea que comandos utilizo

  16. Colo 13.03.2007 - 19:24 - #

    Hola la verdad muy bueno informe muchas gracias por conpartirlo con la gente que recien esta aprendiendo como yo, sirve de mucha ayuda

    Saludos

  17. Lyly 27.08.2007 - 13:31 - #

    Excelente curso muy practico y completo.

    Felicidades sigue aportando tus conocimientos a los demas que en realidad ayudan mucho.

  18. Paolo Rengifo 05.09.2007 - 10:30 - #

    Solo baja la informacion para luego leer, como soy profesor de Programación queria aprender mas hacerca de SQL estaria complacido si tendrieces otros manuales de SQL para que me envie a mi correo ok gracias

  19. Enrique 08.09.2007 - 14:09 - #

    esta muy buena esta informacion sobre todo para mi que estoy empezando si alguien pudiese enviarme algo mas mi correo es jrincon_88@hotmail.comde verdad se los agradeceria

  20. Arelys Janneth Molina Piguave 13.09.2007 - 08:53 - #

    Sr. lo felicito Es un Tutorial magnifico creo que mas dudas no habra sobre SQL.
    Gracias.

  21. Jhony Zárate 13.09.2007 - 14:40 - #

    Lo felicito por este material que nos brinda. Solo para decirle que no puedo bajar el tema 3 “Criterios de Selcción”, me gustaría que me ayude . Gracias nuevamente y felicitaciones

  22. flemate ruiz rosalia 19.09.2007 - 19:54 - #

    que en esta pagina para estudiantes que es mi caso ya que encontre todo lo necesario para realizar actividades como de la carrera de informatica

  23. Edgar Adarí 11.10.2007 - 08:32 - #

    Hola Claudio, ¡¡¡FELICIDADES MANO!!! Ya hacía falta un tutorial como este en la gran red, la verdad está muy bueno, pocos hay como este, MUCHAS GRACIAS me ha servido muchísimo.

  24. fernando 17.10.2007 - 08:44 - #

    hola claudia Te felicito por el tutorial que tienes me parece bastante comprensible y practico. gracias por compartir tus conocimientos.
    att.
    fernando

  25. CARLOS JAVIER MORALES 26.10.2007 - 11:43 - #

    muchas felicidades por tu portal es muy completo y entendible , espero sigas ayudandonos . bye

    GRACIAS…

  26. JOSE MENDOZA 12.11.2007 - 18:50 - #

    Un tutorial muy bueno y entendible por sus ejemplos, muchas gracias me sivio muchisimo.

  27. Alejandro Hernández 20.11.2007 - 14:13 - #

    Felicidades por el tutorial, soy profesor de bachillerato y me sirvió muchisimo para apoyarme y complementar mis clases.

  28. Noelia 24.11.2007 - 00:48 - #

    Muchas muchas gracias!!!! justo lo que buscaba. Excelente ayuda. Gracia por compartir tus conocimientos.

  29. KLEBER CHICAIZA V. 16.01.2008 - 09:54 - #

    Esta Página fue ágil y oportuna para resolver mis inquietudes, gracias a ustedes por este soporte técnico, estoy especializándome en este Lenguaje.

  30. Oscar Perez 20.01.2008 - 14:02 - #

    Buen dia.

    Me parece una excelente pagina, donde podemos hallar informacion, manuales, etc, como muchos de nosotros los que empezamos en programacion nos resulta verdaderamente util. Con relacion al manual de SQL “EXCELENTE”, NO necesité de una persona que me explique, puesto que lo entendí facilmente. No puede despedirme sin antes agradecer a Claudio Casares, por su aporte para que nosotros los novatos aprendamos sin costo alguno; ya que hoy en dia es practicamente imposible hallar alguna persona, que quiera compartir sus conocimientos sin obtener una retribucion economica.
    Gracias Claudio, espero molestarte de vez en cuando, si es que se me presenta algun problema o duda.
    Atentamente.
    Oscar Perez.

  31. MIIKE STRUCIAT 18.05.2008 - 20:52 - #

    realmente un genio… me saco de muchos apuros… gracias

  32. suneco 11.06.2008 - 16:15 - #

    Hola tengo un problema con los autonumericos pongo que me empiecen en uno y que vaya aumentadndo de 1 en 1 y ahce lo que le da la gana ya los reinicie ¿que le pasa?

  33. jesfa 12.06.2008 - 16:48 - #

    Es el primer lugar donde encuentro ademas del tutorial los ejemplos de uso practico, felicitaciones y agradecimiento a Claudio Casares

  34. Fernando 13.06.2008 - 10:50 - #

    buen material,si me puedes ayudar con material
    para trabajar para enviar la sentencia desde la capa de aplicaciones (es una cadena a com que se a un procedimiento me da error en vb.net 2005 al usar mas de una tabla)

Deja tu Comentario


Maestros del Web se reserva el derecho de moderación de los comentarios. Evita utilizar palabras soeces, ataques directos, descalificativos, insultos, de lo contrario tu comentario será eliminado.


Boletín

Agrega nuestro feed a  Netvibes
wikio Add to Technorati Favorites

-


Maestros del Web es el punto de encuentro para los entusiastas de la red.

Creative Commons by-nc-sa 3.0 | Política de Privacidad | CMS: Wordpress