Está en la página 1de 13
8 Firs de stocci 0) Mw ML Filtros de Seleccién (Il) Objetivo General ‘Conocer como se Obtiene informacion en base a condiciones compuestas Objetivos especificos Conocer as diferentes formas de usar la clzusula Where con condiciones compuestas Contenido 4. Operadores Logicos 2. Filtros Compuestos 3. Condicionales compuestos con el operador lbgico And 4, Condicionales compuestos con el operador légico Or 5, Condicionales compuestos Mixtos 6. Rangos de fechas 4. Operadores Légicos Un operadorlogico es aquel que nos sive para encadenar mas de una condicién; entte fos operadores ldgicos soportados por SQL estén: AND, OR, IS y NOT. A exoepeién de los dos titimos todos poseen la siguiente sintas: operador En donde expresion! y expresion2 son las condiciones @ evaluar, el resultado de la peraoién vara en funcion dl operador gio. La tabla junta muestra los a¥erertes posibles resultados: __[Operador expresion2> [Resultado Verdad AND Falso also Verdad AND Verdad Verdad Faso AND \Verdad Faso Falso ‘AND Falso also Verdad OR Falso Verdad Verdad OR [Verdad \Verdad also OR Verdad Verdad Falso [oR Falso Falso ee sa. urgen arma Si a cualguiera de las anteriores condiciones le anteponemos el operador NOT resultado de la operacion sera el contrario al devuelto sin el operador NOT. 2. Filtros compuestos Se le lama fio compuesto @ aquellas sentencias que tienen mas de una condicisn, enlazadas por un operador logico. La forma de evaluar este tipo de fitro variar’ depenienda del operador l6gico que esté en juego; por tal razén consideraremos tres, casos: a. Filtros compuestos can el operador l6gico And b. Filtros compuestos con el operador logico Or ©. Fillros compuestos con el operador logico And y Or a la vez, llamados filtros ‘compuestos mixtos, 3. Conulicionales compuestos con el operador légico And Le forma de una sentencia con un condicional compuesto con el operador logico And es le siguiente: Select campos from tabla where condicion1 and condicion2 Para que un registro. sea considerado en la sentencia select, es necesario que le condiciont sea verdadera al igual que la condicion2; si una de las dos condiciones es falsa, el registro no es considerado como parte del resultado. ‘Miremes algunos ejemplos Select codigo,nombre,estadoci sexo from empleados where estadocivil="t* and SOFIA MELARA, JOSE LUS ELMER COP [SOSELNA VALLE [ROSA PENA LOPEZ T Figura 41 Note usted que solo los registros que cumplen con las dos condiciones al mismo tiempo aparecen como parte del resultado. Es posible que una persona sea soltera (estadocivi=""’) pero no sea una mujer (sex0='), entonces no aparecerla en el listado, pues el operador légico usado es And, el cual requiere que las dos condiciones se cumplan. Consideremos el siguiente ejercicio: oo La gerencia ha solictado un listado de las personas que ganan entre 5000 y 6000; Ia sentencia Select seria la siguiente ) Select codigo,nombre,sueldo from empleados where sueldo>= 5000 and sueldo ‘<=6000 order by nombre (Caos LUS ACOSTA L ‘ray ozo ONATAN FALOPE am] ace MANUEL DOS SANTOS se as ROSANA LOPEZ Figura 4.2 Note usted que solo los registros que cumplen con las dos condiciones al mismo tiempo aparecen como parte del resultado. Es posible que una persona tenga un suekdo de 7500, yy cumple la primera condicién (sueldo >= 5000), pero no cumple la segunda condicién (ueldo <= 6000}, enionces no apareceria en el istado, pues el operador Ibgico usado es ‘And, el cual requiere que las dos condiciones se cumplan, Cul es la diferencia entre los dos ejercicios anteriores que usan un operador légico And? El primer ejercicio hace referencia a dos campos diferentes en cada condicién, mientras {que el segundo ejercicio hace referencia al mismo campo en cada condicién; lo anterior nos lleva a considerar una situacién muy especial que tiende a confundir al alurnno: En un operador l6gico And tiene sentido hacer referencia al mismo campo solo si se usan operadores de comparacién diferente al igual (=). No tiene sentido referirse al mismo ‘campo con el operador de comparacién igual (=). Analicemos el siguiente caso: Select codigo,nombre,sueldo from empleados where sueldo = 5000 and sueldo = 6000 La sentencia anterior no nos daria ningun resultado pues no es posible que una persona tenga un sueldo de 5000 y a la vez un suekdo de 6000; o es 000 0 es e! 6000 Consideremos un sentencia Select con mas de un operador logico And: El departamento de recursos humanos solicita al departamento de cémputo un listado de los empleados que trabajan en la sucursal 01, que a la vez trabajan en el departamento 102, pero solo los hombres. La sentencia select seria la siguiente: Select _ codigo,nombre,sucursal,departamento, sucursal="01" and departamento='02' and sex« xo from empleados where SAL LenguiedeProaramasion QD wig ES 2 aaa aay i MANUEL DOSSANTOS O12 Mt co JOSE LOPEZ CACER ‘ot e ge NONATANFALOPE OT 2 a a | | Figura4.3 Note usted que solo los registros que cumplen con las tres condiciones al mismo tiempo ~parecan como parte del resultado. Es posible que una persona trabaje en la sucursal 01, y ademds trabaje en el departamento 02, pero que no sea un hombre (sexo=M!); por no ‘cumplir una de las condiciones, no apareceria en el resultado. 4, Condicionales compuestos con el operador logico Or La forma de una sentencia con un condicional compuesto con el operador liga Or es la siguiente: Select campos from tabla where condicion1 or condicion2 Para que un registro sea considerado en la sentencia select, es necesario que la ondiciont sea verdadera o que la condicion2 sea verdadera; si una de las dos condiciones es falsa, pero la otra es verdadara, el registro siempre es considerado como parte del resuitado. Solo en los casos cuando no sea verdadera ninguna de las condiciones (que las dos condiciones sea falsas), el registro no es considerado como parte del resultado, Consideraremos los mismos ejecicios de la seocién anterior (operador logio And) para ver las diferencias: Select codigo,nombre,estadocivil,sexo from empleados where estadocivi: se) a En esl ejercicio anterior, si un empleado en el campo estadocivil tiene el valor uno (1) apareceria en e! resultado aunque no se cumpla la segunda condicidn, que en el campo ssex0'no tenga F (femenino); de igual manera si no cumple la primera condicién, pero ‘cumple la segunda condicién apareceria en el resuitado final. La nica forma de que un registro no aparezca es que ninguna de las dos condiciones se cumpla, que no sea ni estadccivi='t' ni sexo='F. (a Carlos LUIS ACOSTA o F ~ [MANUEL CIFONTES 1 iM | SOFIA MELARA i F [MARIA ALMENDAREZ 3 F lor ROSA ALCANTARA 3 IF a NOSE LUIS ORTEGA i F ora [CARMEN MENOOZA 2 F ors [DUAN LORENZANA oi iM aie [DORS MARTINEZ 2 F 16 MARCELA VALLE 0 F ars ELMER LOPEZ 4 F cas [USAACOSTA 2 F Fiore Note usted lo siguiente: En ol primer registro (001 KARLA EUCEDA), no cumple la condicién de estadocivi="1’, pero cumple la segunda condicién de sexo='F', por lo tanto es considerado en el resultado, pues el operador légico or, requiere que al menos una de la condiciones se cumpla (sea verdadera). En el segundo registro (003 MANUEL CIFONTES), cumple la condicién de estadocivil='1", pero no cumple la segunda condicién de sexo='F’, por lo tanto es considerado en el fesuitado, pues el operador logico or, requiere que al menos una de la condiciones se cumpla (sea verdadera). Consideremos el siguiente ejercicio: Select codigo,nombre,sueldo from empleados where sueldo>= 6000 or sueldo <=6000 order by nombre En esta sentencia select no tendria sentido usar el operador légico Or, pues aparecerian todos los registros; note que cualquier registro cumpliia con cualquiera de las dos condiciones; unos registros podria tener sueldo mayor que 5000, y los que no cumplan cesta condicion, cumplirian la segunda. Tendria sentido e! siguiente pedido: Liste todos los empleados que tengan un sueldo ‘menos de 5000, o los que tienen un sueldo mas de 6000, Select codigo,nombre,sueldo from empleados where sueldo< 000 or sueldo >6000 order by nombre resets oe. CARLOS CONTRERAS (CARMEN MENDOZA [DORIS MARTINEZ ELMER LOPEZ |GERARDO ALMENDAREZ (GERARDO LOPEZ (oo NORGE ALBERTO GIRON 0H] —[NOSELOPEZCACERES [12000] JOSE LUIS ORTEGA 3000] [WOSELNA VALLE i 00] ois “TURN LORENZANA, Toon] Jon —~(UUO BONLLA “16000 ow [NULIO SAVALA a ‘p00 Boa tuisxacosta S00 Figura 45 Note usted que todos jos registros o cumplen una condicién (menor que 5000), 0 cumple la otra (mayor que 6000). Lo anterior nos lleva a la siguiente conclusién: a. Para tener un listado entre un rango de valores usaremos el operador 6gico And; 1 operador de comparacién >= (mayor o igual que) para el valor inicial del rango, y 1 operador de comparacién <= (menor 0 igual que) para el valor final det rango .. Para tener un listado fuera de un rango de valores usaremos el operador logico Or; el operador de comparacién < (menor que) para el valor inicial del rango, y ei operador de comparacién > (mayor que) para el valor final del rango En base a los dos criterios anteriores resuelva las siguientes dos propuestas: Queremos un listado que muestre el codigo,nombre y codigopostal de los empleados ‘cuyo codigopostal esté en el rango del 10 al 11 Como se trata de un rango de valores, usaremas el operadar ldgico And Select codigo.nombre,codigopostal from empleados where codigopostal>="10" and ‘codigopostal<="11" ‘Ahora queremos los empleados que tengan codigopostal fuera del rango del 10 al 14. Como se trata de los casos fuera de un rango de valores, usaremos el operador logico Or Select codigo.nombre,codigopostal from empleados where codigopostal<’10" and codigopostal>'11" O racrsermsont En un operador l6gico Or a diferencia del operador lgico And, si tiene sentido hacer | aferencia al mismo campo usando el operador de comparacion igual (=). Anaicemos el siguiente caso Select codigo,nombre,sueldo from empleados where sueldo = 6000 or suoldo = 6000 ROSA PENA LOPEZ ~ HONATAN FALOPE | eo 0 Figura 4.6 ‘La sentencia anterior nos darla los empleados ya sea que tienen un sueldo de 5000, 0 los que tienen un sueldo de 6000. Consideremos un sentencia Select con mas de un operadorlogico Or El departamento de recursos humanos solicita al departamento de comput Wn listado de fos empleados que trabajan en la sucursal 01, o que a la vez trabajan en el departamento 02,0 los que son hombres. La sentencia select seria la siguiente: Select -codigo,nombre,sucursaldepatamento,soxo from empleados where ‘sucursal='01" or departamento="02' or sexo='M El empleado que no saldria en la consulta es aquel que no trabala en le sucursal 01, ni en fl departamento 02 ni es hombre, es decir, que no cumpla ninguna de las ‘res condiciones enunciadas. 6. Condicionales compuestos mixtos Hemos entrado al tema mas complicado en lo referente a condicionales compuesios y £° cones de los condicionales compuestos mixtos, donde interienen operadores lagicos de tipo And y Or en la misma sentencia Cuando tenemos este tipo de sentencia usualmente las agruparemos entre pareriess: la azn de user paréntesis es para indicar el orden en que deben evaluarse las condiciones. Gomprenderemos mejor este tipo condicional al ver algunos ejemplos Queremos un istado donde se muestre los empleados que son mujeres y solteras © los que son hombres y que trabajan en el departamento 01. Dividamos este clrcice en dos partes: Mujeres y solteras ° Hombres y del departamento 01 Por lo anterior es claro que las condiciones quedarian de la siguiente manera: Sex F’ and estadocivil="1" r —_sexo="M' and departamento='01" scutemuaiecrosenscis ‘Agrupemos entre paréntesis cada parte: (Sexo=F' and estadocivi "yor (se ‘and departamento=01') La sentencia Select quedaria asi Solect codigo,nombre,sexo,estadocivil,departamento from empleados where ") or (sexo="M’ and departamento="01") F [UOSE WUS ORTEGA F oi___[EteR LOPEZ F [acd soseuna VALE F ie [ROSAPERALOP F or [GERARDO ALMENDAREZ [Nw joo? «| GERARDO LOPEZ __ | joo ~ [PABLO ESQUIVEL __ | os JORGE ALBERTO GRON —_[M_ Figura 7 Analicemos otro ejercicio ‘Queremos un listado donde se musstre los empleados que son de la departamento 01 0 del departamento 02 y que a la vez son hombres. Dividamos este ejercicio en dos partes: Departamento 01 0 Departamento 02 y Hombres Por lo anterior es claro que las condiciones quedarian de la siguiente manera: depariament 101" or dopartamento='02" and ‘Agrupemos entre paréntesis cada parte: (depatamento= 11" or departament 2) and La sentencia Select quedaria asi: Solect _codigo,nombre,sexo,departamento from empleados_-—_ where (depertamento="01' or departamento="02’) and sexo="M’ iver sosocct MANJELOOS SANTOS [Mt [MANUEL CIFONTES iM E [JULIO BONILLA IM [CARLOS CONTRE! iM L oat ROGER ROBERTO LOPEZ |M (23 MARCIO LOPEZ PENA Iw foo. [GERARDO ALMENDAREZ car (GERARDO LOPEZ jo25 (JULIO SAVALA [ooo [PABLO ESQUIVEL one [JORGE ALBERTO GON {W [ooo [PABLOJUNIOR iM Figura 48 6. Rangos de fechas El concepto de rangos de valores tiene mayor utilidad cuando se habla de rangos de fechas, y ademas se cruza con otra variable. Analicemos el siguiente caso: Mostrar todos los empleados que nacieron entre el 01/01/1960 al 31/12/1873 Select _codigo,nombre,fechanac from empleados where fechanac>=#01/01/1960# and fochanacc=#12/S4973# Mostrar todos los empleados que nacieron entre el 01/01/1960 al 31/12/1873 y de la sueursal 02 Select codigo,nombre,echanac,sucursal from empleados where fechanac>=#01/01/19608 and fochanace=#12/31/1973# and sucursal="02" scrsaaseteregancin Guia de trabajo Capitulo No. 4 A continuacién se le presentan una serie de propuestas, de las cuales usted debe indicar en su laboratorio e indicar cuantos registros le fueron devueltos por la instruccién: Nomi de tbe Fats Figura 2.141 |. Mostrar los datos de factura, fecha y totalneto de las facturas de contado y de la sucursal 01 No. de registros 2. Mestrar os datos de Factura, Fecha, y Vendedor del vendedor Gt y de credito corcenado por fecha No. de registros 3. Mestrar los campos factura fecha,totaineto de las Facturas del 7 de febrero del 2003 y de contado No. de registros, 4, Mostrar la factura, fecha con el rétulo-fecha de factura, y totalneto con el rotulo: Total factura de aquellas facturas cuya venta total sea mayor de 50000 y de la sucursal 02 No. de registras 5. Mastrar todos los campos de la tabla de Facturas ordenados por Vendedor y Cliente de las facturas de crédito 0 det vendedor 01 No, de registos 6. Mostrar todos los campos de la tabla de Facturas entre las fechas 01 de febrero del 2003 al 28 de febrero del 2003 No. de registros, © rns esssint 7, Mostrar todos los campos de la tabla de Facturas fuera del rango de fechas de! inciso anterior (6) No. de registros_ 8, Mostrar todos los campos de la tabla de Facturas cuya venta total esta entre 9000 y 50000 No. de registros_ 9, Mostrar todos los campos de la tabla de Facturas fuera del rango de valores del inciso anterior (8) No. de registros. 40. Mostrar todos los campos de la tabla de Facturas del cliente 01, y ademas hechas por el vendedor 04 y en la sucursal 01 No. de registros 44. Mostrar todos los campos de la tabla de Facturas de la suoursal 01 y de contado, o de la sucursal 02 y vendedor 02 No, de registros, 42. Mostrar todos los campos de la tabla de Facturas de credito 0 que pagaron impuesto, yy de la suoursal 01 No. de registros, 413, Mostrar todos los campos de [a tabla de Facturas que esta entre el 01/01/2008 al 31/01/2003 y del vendedor 100 No. de registros +14, Mostrar todos los campos de Ia tabla de Facturas que esté entre el 01/01/2003 al 31/01/2008 y de la sucursal 02 No, de registros. 15, Mostrar todos los campos de la tabla de Facturas de le sucursal 04 y ventas arriba de 100000 No, de registros 46. Mostrar todos los campos de la tabla de Facturas que esté entre el 01/01/2003 al 31/12/2003 y hechas al cliente 108 No. de registros sometcermpsais 17. Considere la siguiente tabla: ARTICULOS. La siguiente instruccién: SELECT codigo, nombre, pagaimpt precloventa FROM arculs; produce et ‘Sgusnts ound de sale: ~__TELEVISOR DE PANTALLA GIGANTE. | MUEBLES DE SALA PREMIER [EQUIPO DE SONIDO SONY XR-2 HORNO-MICRO LZ. Ss S MUEBLES DE SALAEMPERADOR |S. Ss S IMUEBLES DE COSINA MIHOGAR [EGUPO DE SONIDO GOLD STAR WE rg IMUEBLES DE SALA PREMIER, jor IMUEBLES D= SALA EMPERADOR 6 [EGUIPO DE SONIDO GOLD STAR YE 117. Muestre todos los articulos cuya existencia esté entre 40 - 60 No. de registros 20. Considere la siguiente tabla: NINOS Oikisnnnun istruccién para mostrar el cédigo del nino y nombre de los nifios que estén recluidos por robo y violacion. b. Cudl serfa la instruceién para mostrar el cédigo det nifio y nombre de los nifios varones. y que estan por asesinato

También podría gustarte