06.09.2014 Views

Bases de datos: Software libre - Universitat Oberta de Catalunya

Bases de datos: Software libre - Universitat Oberta de Catalunya

Bases de datos: Software libre - Universitat Oberta de Catalunya

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

© FUOC • 71Z799014MO 35 El lenguaje SQL<br />

Fijémonos en la condición <strong>de</strong> WHERE <strong>de</strong> la subconsulta, que nos asegura que los sueldos que<br />

observamos son los <strong>de</strong> los empleados asignados al proyecto <strong>de</strong> la consulta. La respuesta a esta<br />

consulta sería la que aparece en el margen.<br />

b) A continuación, presentamos un ejemplo <strong>de</strong> ANY/SOME para buscar los códigos y los nombres<br />

<strong>de</strong> los proyectos que tienen algún empleado que gana un sueldo más elevado que el precio<br />

<strong>de</strong>l proyecto en el que trabaja.<br />

codigo_proyec nombre_proyec<br />

1 GESCOM<br />

2 PESCI<br />

3 SALSA<br />

4 TINELL<br />

SELECT codigo_proyec, nombre_proyec<br />

FROM proyectos<br />

WHERE precio < ANY (SELECT sueldo<br />

FROM empleados<br />

WHERE codigo_proyec = num_proyec);<br />

codigo_proyec nombre_proyec<br />

La respuesta a esta consulta está vacía, como se ve en el margen.<br />

6) Predicado EXISTS<br />

Para comprobar si una subconsulta produce alguna fila <strong>de</strong> resultados, po<strong>de</strong>mos<br />

utilizar la sentencia <strong>de</strong>nominada test <strong>de</strong> existencia: EXISTS. Para comprobar<br />

si una subconsulta no produce ninguna fila <strong>de</strong> resultados, po<strong>de</strong>mos<br />

utilizar NOT EXISTS.<br />

SELECT nombre_columnas_a_seleccionar<br />

FROM tabla_a_consultar<br />

WHERE [NOT] EXISTS subconsulta;<br />

Ejemplo <strong>de</strong> uso <strong>de</strong>l predicado EXISTS<br />

codigo_empl<br />

nombre_empl<br />

Un ejemplo en el que se buscan los códigos y los nombres <strong>de</strong> los empleados que están asignados<br />

a algún proyecto sería:<br />

SELECT codigo_empl, nombre_empl<br />

FROM empleados<br />

WHERE EXISTS (SELECT *<br />

FROM proyectos<br />

WHERE codigo_proyec = num_proyec);<br />

1 María<br />

2 Pedro<br />

3 Ana<br />

4 Jorge<br />

5 Clara<br />

6 Laura<br />

7 Rogelio<br />

La respuesta a esta consulta sería la que se muestra en el margen.<br />

2.5.4. Or<strong>de</strong>nación <strong>de</strong> los <strong>datos</strong> obtenidos en respuestas a consultas<br />

Si se <strong>de</strong>sea que, al hacer una consulta, los <strong>datos</strong> aparezcan en un or<strong>de</strong>n <strong>de</strong>terminado,<br />

es preciso utilizar la cláusula ORDER BY en la sentencia SELECT, que<br />

presenta el siguiente formato:<br />

SELECT nombre_columnas_a seleccionar<br />

FROM tabla_a_consultar

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!