El Profesional de Sistemas de Información y la Programación
UNIDAD N° 1: EL PROFESIONAL DE SISTEMAS DE INFORMACIÓN
Analista de sistemas:
Un analista de sistemas es el individuo responsable de investigar, planear, coordinar y recomendar opciones de software y sistemas para cumplir los requerimientos de una empresa. Debe adquirir cuatro habilidades: analítica, técnica, gerencial e interpersonal.
- Las habilidades analíticas permiten entender a la organización y sus funciones, lo que ayuda a identificar oportunidades, analizar y resolver problemas.
- Las habilidades técnicas ayudan a entender el potencial y las limitaciones de las tecnologías de la información. Debe ser capaz de trabajar con varios lenguajes de programación, sistemas operativos y plataformas de hardware.
- Las habilidades gerenciales ayudan al analista de sistemas a administrar proyectos, recursos, riesgos y cambios.
- Las habilidades interpersonales ayudan al analista de sistemas a trabajar con los usuarios finales.
Bajo este enfoque, el proceso de construcción de software se concibe como un conjunto de tareas altamente especializadas donde está claramente definido el papel de cada categoría profesional:
- El analista tiene como cometido analizar un problema y describirlo con el propósito de ser solucionado mediante un sistema informático.
- El diseñador realiza, con base en el análisis, el diseño de la solución.
- El analista tiene que delimitar el análisis para ver lo que se quiere hacer inicialmente y después darle al usuario nuevas opciones de uso.
Perfil tradicional del analista:
El perfil tradicional del analista se centra en el análisis. Requiere conocimiento del paradigma tradicional de la ingeniería del software y del ciclo de vida del software en cascada.
- Modelado funcional: Diagrama de flujo de datos, diagrama de estado, etc.
- Modelado de datos y sus técnicas: Diagrama entidad-relación, modelo relacional, etc.
- Conocimiento de la tecnología: arquitectura de software, bases de datos, etc.
ANALISTA FUNCIONAL
- El rol del Analista Funcional en equipos ágiles: los requerimientos y las reglas de negocio se definen al mismo tiempo que se desarrolla el software, en ciclos iterativos.
- El Rol del Analista Funcional como Facilitador: es traducir la visión del Dueño del Producto en el Listado de Requerimientos (Backlog) que servirán como entrada al equipo de desarrollo.
- El Analista Funcional funciona como enlace entre los interesados en el proyecto (stakeholders) y el equipo de desarrollo: Para ello, utiliza distintas técnicas y habilidades para asistir a los líderes del proyecto en el logro de los objetivos propuestos.
- En proyectos de desarrollo utilizando el ciclo ágil, el Analista Funcional contribuye en dos actividades principales: asegurar el cumplimiento de la Visión y Alcance, y moderar las reuniones de Planificación y Revisión de cada Iteración.
El desafío para el patrocinador del proyecto es asegurar que la visión y alcance del proyecto sean resultado de un esfuerzo colaborativo entre todos los interesados, de aquí la necesidad del rol del Analista Funcional como facilitador. Debe asegurarse de que estas funcionalidades están justificadas y que tienen correspondencia con las necesidades de negocio.
PROGRAMADOR:
Un programador es la persona que escribe, depura y mantiene el código fuente de un programa informático, es decir, del conjunto de instrucciones que ejecuta el hardware de una computadora para realizar una tarea determinada.
El programador se encarga de la implementación de prototipos. El analista tiene como cometido analizar un problema y describirlo con el propósito de ser solucionado mediante un sistema de información.
El programador, cuya única función consistía en trasladar las especificaciones del analista en código ejecutable para la computadora, ha visto su profesión evolucionar.
Especialidades:
- Programadores de mainframe.
- Programadores de “Nuevas Tecnologías”.
- Programadores de Firmware y videojuegos.
- Programadores de sistemas integrados.
- Programadores de Software de Escritorio a medida: Visual Basic, Visual Fox, Delphi, entre otros.
PROGRAMACIÓN EXTREMA:
La programación extrema se diferencia de las metodologías tradicionales principalmente en que pone más énfasis en la adaptabilidad que en la previsibilidad.
Se puede considerar la programación extrema como la adopción de las mejores metodologías de desarrollo de acuerdo a lo que se pretende llevar a cabo con el proyecto, y aplicarlo de manera dinámica durante el ciclo de vida del software.
VALORES:
Simplicidad:
Se simplifica el diseño para agilizar el desarrollo y facilitar el mantenimiento. Para mantener la simplicidad es necesaria la refactorización del código, que es la manera de mantener el código simple a medida que crece. También se aplica la simplicidad en la documentación; de esta manera, el código debe comentarse en su justa medida, intentando que esté autodocumentado.
Comunicación:
Para los programadores, el código comunica mejor cuanto más simple sea. El código autodocumentado es más fiable que los comentarios. Las pruebas unitarias son otra forma de comunicación, ya que describen el diseño de las clases y los métodos al mostrar ejemplos concretos de cómo utilizar su funcionalidad. La comunicación con el cliente es fluida ya que el cliente forma parte del equipo de desarrollo. El cliente decide qué características tienen prioridad y siempre debe estar disponible para solucionar dudas.
Retroalimentación (feedback):
Al estar el cliente integrado en el proyecto, su opinión sobre el estado del proyecto se conoce en tiempo real. Al realizarse ciclos muy cortos tras los cuales se muestran resultados, el código también es una fuente de retroalimentación gracias a las herramientas de desarrollo.
Coraje o valentía:
Hay que ser valiente para confiar en que la programación por parejas beneficia la calidad del código sin repercutir negativamente en la productividad. Se requiere coraje para implementar las características que el cliente quiere ahora sin caer en la tentación de optar por un enfoque más flexible que permita futuras modificaciones.
Respeto:
Los programadores no pueden realizar cambios que hagan que las pruebas existentes fallen o que demoren el trabajo de sus compañeros. Los miembros respetan su trabajo porque siempre están luchando por la alta calidad en el producto y buscando el diseño óptimo o más eficiente para la solución a través de la refactorización del código. Los miembros del equipo respetan el trabajo del resto no haciendo menos a otros, sino orientándolos a realizarlo mejor.
Características fundamentales:
Las características fundamentales del método son:
- Desarrollo iterativo e incremental: pequeñas mejoras, unas tras otras.
- Pruebas unitarias continuas, frecuentemente repetidas y automatizadas, incluyendo pruebas de regresión.
- Programación en parejas: se recomienda que las tareas de desarrollo se lleven a cabo por dos personas en un mismo puesto.
- Frecuente integración del equipo de programación con el cliente o usuario.
- Corrección de todos los errores antes de añadir nueva funcionalidad.
- Reorganización del código, es decir, reescribir ciertas partes del código para aumentar su legibilidad y mantenibilidad pero sin modificar su comportamiento.
- Propiedad del código compartida: en vez de dividir la responsabilidad en el desarrollo de cada módulo en grupos de trabajo distintos, este método promueve el que todo el personal pueda corregir y extender cualquier parte del proyecto.
- Simplicidad en el código: es la mejor manera de que las cosas funcionen. Cuanto más simple es el sistema, menos tendrá que comunicar sobre éste, lo que lleva a una comunicación más completa, especialmente si se puede reducir el equipo de programadores.
UNIDAD N° 2: PROGRAMACIÓN MODULAR
PROGRAMACIÓN ESTRUCTURADA (PE)
La programación estructurada está compuesta por un conjunto de técnicas que han ido evolucionando, aumentando considerablemente la productividad del programa y reduciendo el tiempo de depuración y mantenimiento del mismo.
Esta programación estructurada utiliza un número limitado de estructuras de control, reduciendo así considerablemente los errores.
- ESTA TÉCNICA INCORPORA:
- Diseño descendente (top-down): el problema se descompone en etapas o estructuras jerárquicas.
- Recursos abstractos (simplicidad): consiste en descomponer las acciones complejas en otras más simples, capaces de ser resueltas con mayor facilidad.
- Estructuras básicas: existen tres tipos de estructuras básicas:
- Estructuras secuénciales: cada acción sigue a otra acción secuencialmente. La salida de una acción es la entrada de otra.
- Estructuras selectivas (IF THEN, SELECT CASE): en estas estructuras se evalúan las condiciones y, en función del resultado de las mismas, se realizan unas acciones u otras. Se utilizan expresiones lógicas.
- Estructuras repetitivas (DO LOOP, FOR NEXT, WHILE WEND, DO UNTIL): son secuencias de instrucciones que se repiten un número determinado de veces.
- VENTAJAS DE LA PROGRAMACIÓN ESTRUCTURADA
- Los programas son más fáciles de entender.
- Se reduce la complejidad de las pruebas.
- Aumenta la productividad del programador.
- Los programas quedan mejor documentados internamente.
PROGRAMACIÓN MODULAR
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable.
La programación modular permite la descomposición de un problema en un conjunto de subproblemas independientes entre sí, más sencillos de resolver y que pueden ser tratados separadamente unos de otros. Gracias a la modularidad, se pueden probar los subprogramas o módulos de manera independiente, depurándose sus errores antes de su inclusión en el programa principal y almacenarse para su posterior utilización cuantas veces se precise.
En la programación modular se consta de varias secciones divididas de forma que interactúan a través de llamadas a procedimientos, que integran el programa en su totalidad.
En la programación modular, el programa principal coordina las llamadas a los módulos secundarios y pasa los datos necesarios en forma de parámetros.
A su vez, cada módulo puede contener sus propios datos y llamar a otros módulos o funciones.
MÓDULO
Un módulo es cada una de las partes de un programa que resuelve uno de los subproblemas en que se divide el problema complejo original. Cada uno de estos módulos tiene una tarea bien definida y algunos necesitan de otros para poder operar.
Uno de los elementos principales de programación utilizados en la representación de cada módulo es la subrutina.
UNA SUBRUTINA
Es un conjunto de instrucciones de cómputo que realizan una tarea.
Un módulo es un segmento, rutina, subrutina, subalgoritmo o procedimiento, que puede definirse dentro de un algoritmo con el fin de ejecutar una tarea específica y puede ser llamado o invocado desde el algoritmo principal cuando sea necesario. Los módulos tienen una entrada y una salida. Se pueden tomar decisiones dentro de un módulo que tenga repercusión en todo el flujo, pero el salto debe ser únicamente hacia el programa principal.
¿Cuándo es útil la modularización?
Este enfoque de segmentación o modularización es útil en dos casos:
- Cuando existe un grupo de instrucciones o una tarea específica que deba ejecutarse en más de una ocasión.
- Cuando un problema es complejo o extenso, la solución se divide o segmenta en módulos que ejecutan partes o tareas específicas.
Ventajas de la Programación Modular:
- Los módulos son independientes: Se podrá modificar un módulo sin afectar a los demás. El uso de módulos facilita la proyección y la comprensión de la lógica subyacente para el programador y el usuario. El mantenimiento y la modificación de la programación se facilitan.
- Desarrollar programas de forma modular:
Significa que pueden identificarse las principales tareas a realizar por el programa y que se pueden diseñar y probar procedimientos individuales para estas tareas.
Tiempo de vida de los datos:
Según el lugar donde son declaradas, puede haber dos tipos de variables:
- Globales: las variables permanecen activas durante todo el programa.
- Locales: las variables son creadas cuando el programa llega a la función o procedimiento en la que están definidas. Al finalizar la función o el procedimiento, desaparecen de la memoria.
Parámetros Formales: Es un tipo especial de variables en un procedimiento a los que se pueden pasar valores desde el exterior del procedimiento. Se declaran en la cabecera del procedimiento.
Parámetros por Valor: Son los parámetros que pueden recibir valores pero que no pueden devolverlos. Es una variable global que se conecta con una variable local mediante el envío de su valor, después de lo cual ya no hay relación. Lo que le sucede a la variable local no afectará a la global.
Parámetros por Variable: Son los que pueden recibir y devolver valores. Son variables globales que se conectan con una local a través de su contenido; al establecerse dicha conexión, las variables se convierten en sinónimos, lo que afecte a la variable local le sucederá a la variable global.
FUNCIONES Y PROCEDIMIENTOS
PROCEDIMIENTOS
Son subprogramas, es decir, módulos que forman parte de un programa y realizan una tarea específica. Puede tener sus propias variables. Estas se llaman variables locales, sólo se pueden usar en el cuerpo del procedimiento y no en el cuerpo principal del programa.
FUNCIONES
La función es una estructura autónoma similar a los módulos. La diferencia radica en que la función se usa para devolver un solo valor de un tipo de dato simple a su punto de referencia. Las funciones se dividen en:
- Estándar: Son funciones proporcionadas por cualquier lenguaje de programación de alto nivel, y se dividen en aritméticas y alfabéticas.
- Definidas por el usuario: son funciones que puede definirlas el programador con el propósito de ejecutar alguna función específica, y que por lo general se usan cuando se trata de hacer algún cálculo que será requerido en varias ocasiones en la parte principal del algoritmo.
Semejanzas entre Procedimientos y Funciones: en ambos casos consiste en una cabecera, una parte de declaraciones y una parte de instrucciones.
- Ambos son unidades de programa independientes. Los parámetros, constantes y variables declarados en una función o procedimiento son locales a la función o al procedimiento, solamente son accesibles dentro del subprograma.
- El número de los parámetros reales debe ser el mismo que el número de los parámetros formales y los tipos de los parámetros reales deben coincidir con los tipos de los correspondientes parámetros formales, con una excepción: se puede asociar un parámetro real de tipo entero con un parámetro formal por valor de tipo real.
Diferencias entre Procedimientos y Funciones:
- Mientras que a un procedimiento se le llama mediante una instrucción de llamada a procedimiento, a una función se la llama usando su nombre en una expresión.
- Puesto que se debe asociar un valor al número de una función, también se le debe asociar un tipo. Por tanto, la cabecera de una función debe incluir un identificador de tipo que especifique el tipo del resultado. Sin embargo, no se asocia ningún valor con el nombre de un procedimiento y, por tanto, tampoco ningún tipo.
- Las funciones normalmente devuelven un único valor a la unidad de programa que la llama. Los procedimientos suelen devolver más de un valor, o pueden no devolver ninguno si solamente realizan alguna tarea, como una operación de salida.
- En los procedimientos, los valores se devuelven a través de parámetros por variable, pero el valor de una función se devuelve mediante la asignación al nombre de la función de dicho valor en la parte de instrucciones de la definición de la función.
Funciones Estándar
Son funciones proporcionadas por cualquier lenguaje de programación de alto nivel, y se dividen en aritméticas y alfabéticas.
ARITMETICAS:
[Insertar tabla de funciones aritméticas]
ALFABETICAS:
[Insertar tabla de funciones alfabéticas]
Funciones definidas por el Usuario
[Insertar ejemplos de funciones definidas por el usuario]
REUTILIZACIÓN DE CÓDIGO
Se define la reutilización de software como el uso de cualquier tipo de módulo lógico (procedimientos, funciones, librerías, clases, etc.), o parte del mismo, creado con anterioridad, en un nuevo proyecto.
Beneficios de la reutilización:
- Mejora de la productividad.
- Disminución tiempo de desarrollo.
- Mejor adaptación a requisitos cambiantes, teniendo en cuenta que los requisitos no son estables.
- Disminución de costes.
- Mejora de la calidad del software:
- Mayor fiabilidad.
- Mayor eficiencia (aunque al principio pueda parecer que no).
- Mejoras en las actividades de Mantenimiento y soporte de aplicación.
- Mejoras en las actividades de control y planificación por la reducción de desviaciones en los desarrollos.
Niveles de reutilización
- Código: librerías de funciones, editores, inclusión de ficheros, mecanismos de herencia en POO, componentes, etc.
- Diseños: no volver a inventar arquitecturas, patrones de diseño, patrones arquitectónicos (C/S, pipeline, OO, etc.).
- Especificaciones: reutilización de las abstracciones del dominio. Debe estar asociada a la generación (semi)automática de los elementos de diseño e implementación.
- HERRAMIENTAS: se dispone de las herramientas adecuadas. La metodología IRM requiere de las siguientes herramientas:
- Gestión de ontologías.
- Trazabilidad total.
- Repositorio de activos reutilizables.
LIBRERIAS DLL (DINAMIC LINK LIBRARY)
Una Librería o DLL, como característica principal, nos permite agrupar el código de nuestro programa en módulos separados, cada uno con una función especial.
Esto hace que la programación sea más sencilla y menos trabajosa a la hora de solucionar problemas o crear nuevos programas, dado que una DLL puede ser utilizada por varios programas a la vez.
Usar la DLL recién creada desde el código de otro proyecto de VB6
- Crea un nuevo proyecto de tipo EXE estándar.
- Escribe los Declare para acceder a las funciones como si de una DLL de Windows se tratara.
- Por ejemplo, si tenemos una DLL llamada Prueba.dll en la que hemos definido una función llamada Saludo que devuelve un String, la debes definir de esta forma:
Private Declare Function Saludo Lib "Prueba.dll" () As String
- La librería Prueba.dll debe estar en el mismo directorio que el ejecutable de este proyecto.
- Escribe un código que use esa función de la misma forma que lo harías con cualquier otra función, por ejemplo:
MsgBox Saludo
- Al ejecutarlo, verás que se muestra lo que la función Saludo devuelva.
UNIDAD N° 3: APLICACIONES CON BASE DE DATOS:
Una base de datos o banco de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso.
Existen programas denominados sistemas gestores de bases de datos, abreviados SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada.
Definición de base de datos:
Se define una base de datos como una serie de datos organizados en Tablas y relacionados entre sí, los cuales son recolectados y explotados por los sistemas de información de una empresa u organización en particular para producir información.
Características:
- Independencia lógica y física de los datos.
- Redundancia mínima.
- Acceso concurrente por parte de múltiples usuarios.
- Integridad de los datos.
- Consultas complejas optimizadas.
- Seguridad de acceso y auditoría.
- Respaldo y recuperación.
- Acceso a través de lenguajes de programación estándar.
Sistema de Gestión de Base de Datos (SGBD): son un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. Se compone de un lenguaje de definición de datos, de un lenguaje de manipulación de datos y de un lenguaje de consulta.
Ventajas de las bases de datos
- Control sobre la redundancia de datos: todos estos ficheros están integrados, por lo que no se almacenan varias copias de los mismos datos.
- Consistencia de datos: Eliminando o controlando las redundancias de datos se reduce en gran medida el riesgo de que haya inconsistencias, y está disponible para todos los usuarios inmediatamente. El propio sistema puede encargarse de garantizar que todas las copias se mantienen consistentes.
- Compartición de datos: la base de datos pertenece a la empresa y puede ser compartida por todos los usuarios que estén autorizados.
- Mantenimiento de estándares: Gracias a la integración es más fácil respetar los estándares necesarios. Estos estándares pueden establecerse sobre el formato de los datos para facilitar su intercambio.
- Mejora en la integridad de datos: la integridad se expresa mediante restricciones o reglas que no se pueden violar. Estas restricciones se pueden aplicar tanto a los datos como a sus relaciones.
- Mejora en la seguridad: La seguridad de la base de datos es la protección de la base de datos frente a usuarios no autorizados.
- Mejora en la accesibilidad a los datos: Muchos SGBD proporcionan lenguajes de consultas o generadores de informes que permiten al usuario hacer cualquier tipo de consulta sobre los datos, sin que sea necesario que un programador escriba una aplicación que realice tal tarea.
- Mejora en la productividad: El SGBD proporciona muchas de las funciones estándar que el programador necesita escribir en un sistema de ficheros. El hecho de disponer de estas funciones permite al programador centrarse mejor en la función específica requerida por los usuarios.
- Mejora en el mantenimiento.
- Aumento de la concurrencia.
- Mejora en los servicios de copias de seguridad.
Desventajas de las bases de datos
- Complejidad: Los SGBD son conjuntos de programas que pueden llegar a ser complejos con una gran funcionalidad. Es preciso comprender muy bien esta funcionalidad para poder realizar un buen uso de ellos.
- Coste del equipamiento adicional.
- Vulnerable a los fallos.
Tipos de Base de Datos
Entre los diferentes tipos de base de datos, podemos encontrar los siguientes:
- MySql:
- PostgreSql:
- Oracle:
Lenguaje de Consulta Estructurado SQL
El lenguaje de consulta estructurado o SQL (Structured Query Language) es un lenguaje declarativo de acceso a base de datos relacionales que permite especificar diversos tipos de operaciones en éstas.
Una de sus características es el manejo del álgebra y el cálculo relacional, permitiendo efectuar consultas con el fin de recuperar (de una forma sencilla) información de interés de una base de datos, así como también hacer cambios sobre ella.
Fundamentos
Data Manipulation Language (DML)
- Usado para acceder, crear, modificar o eliminar datos en una estructura de base de datos existente.
Data Definition Language (DDL)
- Usado para crear, modificar o eliminar objetos de base de datos y sus privilegios.
Transaction Control
- Garantiza la consistencia de los datos organizando las instrucciones SQL en transacciones lógicas, que se completan o fallan como una sola unidad.
Session Control
- Permiten controlar las propiedades de sesión de un usuario. Una sesión se inicia al momento que un usuario se conecta a la base de datos hasta que se desconecta.
Consultas simples en SQL
Seleccionando los registros de una Tabla:
Select * From Tabla
Seleccionando Columnas de una Tabla
Select col1, col2 From Tabla
Alias para Columnas
Select col1 as A, col2 as B From Tabla
Consultando valores únicos:
Select Distinct col1 From Tabla
Limitando la cantidad de Filas de la consulta:
En ORACLE:
Select * From Tabla Where Rownum <= 10
EN SQL SERVER:
SELECT TOP 10 campo1, campo2 FROM tabla
EN MYSQL:
SELECT campo1, campo2 FROM products
LIMIT 10
Fundamentos de SQL
Fundamentos:
[Insertar información sobre fundamentos de SQL]
Operadores de Comparación:
=; < >; <=; >=
Otros Operadores
- IN y NOT IN
- EXISTS
- IS NULL y IS NOT NULL
- LIKE
Operador de Conjunto UNION
Select CLIENTES_NOMBRE as Nombre From CLIENTES
UNION
Select PROVEEDORES_NOMBRE as Nombre From PROVEEDORES
Agrupaciones en SQL
Funciones:
- SUM
Select SUM(EMPLEADOS_IngresoMensual) as IngresoTotal From EMPLEADOS
- COUNT
Select COUNT(*) as TotalEmpleados From EMPLEADOS
- MAX
Select MAX(EMPLEADOS_IngresoMensual) as IngresoMaximol From EMPLEADOS
- MIN
Select MIN(EMPLEADOS_IngresoMensual) as IngresoMinimo From EMPLEADOS
- AVG
Select AVG(IpvAspi03_IngresoMensual) as IngresoTotal From EMPLEADOS
- GROUP BY
Select SUM(EMPLEADOS_IngresoMensual) as IngresoMensualTotal From EMPLEADOS GROUP BY EMPLEADOS_SEXO
GROUP BY con HAVING
select Count(*), EMPLEADOS_INGRESOMENSUAL FROM EMPLEADOS Group By EMPLEADOS_INGRESOMENSUAL HAVING EMPLEADOS_INGRESOMENSUAL <> 1000
select * from LOCALIDAD, (select Rela_LOCALIDAD,Count(*) from PROVEEDORES Group By Rela_LOCALIDAD HAVING Count(*) < 1000) where rela_localidad=Id_LOCALIDAD
Case When en SQL
- Usando Expresión CASE WHEN
- Caso 1:
CASE
WHEN THEN
WHEN THEN
[ELSE ]
END
- Caso 2:
CASE
WHEN THEN
WHEN THEN
[ELSE ]
END
Consultas Multitablas
- Es importante tener en cuenta las relaciones (ID ; RELA) que van a conectar las diferentes Tablas que intervienen en la consulta:
Select * From Tabla1 T1, Tabla2 T2 Where T2.Rela_Tabla1 = T1.ID_Tabla1;
- No se recomienda relacionar Tablas por campos comunes:
Select * From Tabla1 T1, Tabla2 T2 Where Tabla1_COD = Tabla2_PARAMETRO;
Select * From Tabla1, Tabla2 Where Tabla1_DESCRI LIKE '%Tabla2_TITULO%';
Select * From Tabla1 T1, Tabla2 T2 Where Tabla1_IMPORTE = Tabla2_SALDO;
SQL Subconsultas
Subconsultas de solo una fila:
Select * From Tabla1 Where Rela_Tabla2 =(Select ID_Tabla2 From Tabla2 Where Tabla2_DNI = 27569702)
Subconsultas de múltiples filas
Select * From VENTAS Where Rela_PRODUCTOS IN (Select ID_PRODUCTOS From PRODUCTOS Where PRODUCTOS_CODIGO = 3520)
Select * From VENTAS Where EXISTS (Select * From PRODUCTOS Where RELA_PRODUCTOS = ID_PRODUCTOS and PREEJEC20_CODIGO = 3520)
Subconsultas Escalares:
- En un Case
select LOCALIDAD_descri,Rela_Padre,( Case WHEN Rela_Padre in (select id_LOCALIDAD from LOCALIDAD where Id_LOCALIDAD = 263) Then 'Provincia Argentina' END ) from LOCALIDAD
- En un Select
Select Departamentos_Descri, (Select Max(Salario) From Empleados Where Rela_Departamentos = Id_Departamentos) 'Salario Máximo' From Departamentos
- En un Form
- En un Select y Where
[Insertar ejemplos de subconsultas escalares en un formulario, Select y Where]