 |
|
 |
Subconsultas
Definición de subconsultas.
Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia SELECT. Normalmente se utilizan para filtrar una clausula WHERE o HAVING con el conjunto de resultados de la subconsulta, aunque también pueden utilizarse en la lista de selección.
Por ejemplo podriamos consultar el alquirer último de un cliente.
SELECT CO_CLIENTE, NOMBRE, MARCA, MODDELO FROM ALQUILERES WHERE CO_CLIENTE = 1 AND FECHA_ALQUILER = (SELECT MAX(FECHA_ALQUILER) FROM ALQUILERES WHERE CO_CLIENTE = 1)
|
En este caso, la subconsulta se ejecuta en primer lugar, obteniendo el valor de la máxima fecha de alquier, y posteriormente se obtienen los datos de la consulta principal.
Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal exceptuando que aparece encerrada entre paréntesis.
La subconsulta se puede encontrar en la lista de selección, en la cláusula WHERE o en la cláusula HAVING de la consulta principal.
Tiene las siguientes reestricciones:
- No puede contener la cláusula ORDER BY
- No puede ser la UNION de varias sentencias SELECT
- Si la subconsulta aparece en la lista de selección,o esta asociada a un operador igual "=" solo puede devolver un único registro.
Referencias externas A menudo, es necesario, dentro del cuerpo de una subconsulta, hacer referencia al valor de una columna de la fila actual en la consulta principal, ese nombre de columna se denomina referencia externa.
Una referencia externa es un campo que aparece en la subconsulta pero se refiere a la una de las tablas designadas en la consulta principal.
Cuando se ejecuta una consulta que contiene una subconsulta con referencias externas, la subconsulta se ejecuta por cada fila de la consulta principal.
En este ejemplo la subconsulta aparece en la lista de selección, ejecutandose una vez por cada fila que devuelve la consulta principal.
SELECT CO_EMPLEADO, NOMBRE, (SELECT MIN(FECHA_NOMINA) FROM NOMINAS WHERE CO_EMPLEADO = EMPLEADOS.CO_EMPLEADO) PRIMERA_NOMINA FROM EMPLEADOS;
|
Anidar subconsultas Las subconsultas pueden anidarse de forma que una subconsulta aparezca en la cláusula WHERE (por ejemplo) de otra subconsulta que a su vez forma parte de otra consulta principal.
SELECT CO_EMPLEADO, EMPLEADOS FROM EMPLEADOS WHERE CO_EMPLEADO IN (SELECT CO_EMPLEADO FROM NOMINAS WHERE ESTADO IN ( SELECT ESTADO FROM ESTADOS_NOMINAS WHERE EMITIDO = 'S' AND PAGADO = 'N') )
|
Los resultados que se obtienen con subconsultas normalmente pueden conseguirse a través de consultas combinadas ( JOIN ).
SELECT CO_EMPLEADO, NOMBRE FROM EMPLEADOS WHERE ESTADO IN (SELECT ESTADO FROM ESTADOS WHERE ACTIVO = 'S')
|
Podrá escribirse como :
SELECT CO_EMPLEADO, NOMBRE FROM EMPLEADOS, ESTADOS WHERE EMPLEADOS.ESTADO = ESTADOS.ESTADO AND ESTADOS.ACTIVO = 'S'
|
Normalmente es más rápido utilizar un JOIN en lugar de una subconsulta, aunque esto depende sobre todo del diseño de la base de datos y del volumen de datos que tenga.
Utilizacion de subconsultas con UPDATE Podemos utilizar subconsultas también en consultas de actualización conjuntamente con UPDATE. Normalmente se utilizan para "copiar" el valor de otra tabla.
UPDATE EMPLEADOS SET SALARIO_BRUTO = (SELECT SUM(SALIRO_BRUTO) FROM NOMINAS WHERE NOMINAS.CO_EMPLEADO = EMPLEADOS.CO_EMPLEADO) WHERE SALARIO_BRUTO IS NULL
|
La función EXISTS
EXISTS es una función SQL que devuelve veradero cuando una subconsulta retorna al menos una fila.
SELECT CO_CLIENTE, NOMBRE FROM CLIENTES WHERE EXISTS ( SELECT * FROM MOROSOS WHERE CO_CLIENTE = CLIENTES.CO_CLIENTE AND PAGADO = 'N')
|
La función EXISTS puede ser utilizada en cualquier sentencia SQL váida, SELECT, UPDATE, INSERT o DELETE.
|
| |
 |
Hola
por
Alejandra
Respuesta recibida el [25/05/2007 11:00:46]
|
 |
Me parece que este tutorial es muy bueno
|
| |
 |
Magnífico Tutorial
por
anonymous
Respuesta recibida el [28/05/2007 12:32:03]
|
 |
Claro,conciso y muy bien organizado.
|
| |
 |
Hola
por
Gaudencio
Respuesta recibida el [19/06/2007 11:22:49]
|
 |
Esta muy bien explicado, si sintaxis es entendible, lo recominedo
|
| |
 |
très bien
por
Mauricio
Respuesta recibida el [22/06/2007 08:49:41]
|
 |
Es excelente que halla páginas como esta para las personas que apenas andamos comenzando en estas ondas
|
| |
 |
Tutorial Excelente
por
Manu
Respuesta recibida el [17/07/2007 09:54:58]
|
 |
Para principiantes, muy ilustrativos gracias a sus ejemplos
|
| |
 |
Interesante
por
Johnny
Respuesta recibida el [20/07/2007 09:23:39]
|
 |
Hola me parese interesante su tutorial quisiera tener amigos para intercambiar ideas en Base de Datos, y Programacion incluso hasta de sistema Operativo ... mi correo es .. luisantonio_moran@hotmail.com .. bueno amigos sin mas que decirle me despido .. espero tener muchos amigos para intercambiar ideas by cuidese
|
| |
 |
buena ... muy interesante
por
henry prado yarleque - peru
Respuesta recibida el [28/07/2007 09:41:19]
|
 |
Hola, El tutorial es bueno muy concreto y conciso, gtracias por todos aquellos a los que nos son utiles estas herramientas...
|
| |
 |
Salut!!
por
Quimera!!
Respuesta recibida el [31/07/2007 01:47:40]
|
 |
Hola,el tutorial me parece muy completo me a servido de mucho en estos ultimos meses para mis tareas ya que tengo una maestra muy especial...dejo mi correo para quien me quiera conocer. angel_.13@hotmail.com
|
| |
 |
EXCELENTE
por
Manuel R. Bercián
Respuesta recibida el [07/09/2007 11:07:43]
|
 |
Esto era lo que yo buscaba, EXCELENTE segui adelante!! muy buen material
|
| |
 |
muy bueno, lo recomiendo
por
Anónimo
Respuesta recibida el [13/09/2007 11:12:42]
|
 |
me parece un excelente tutorial, esta muy completo
|
| |
 |
TENGO UN PROYECTO EN MENTE
por
XELA
Respuesta recibida el [19/09/2007 10:02:04]
|
 |
CAUSA BUENAZO EL TUTORIAL(LO HE LEIDO TODOO...), AH DE VERDAD VALES YO HE ESTOY ESTUDIANDO PROGRAMACION RECIEN VOY EN 3° CICLO ME HA SERVIDO BASTANTE... SIGUE PONIENDO MAS TUTORIALES... TE QUISIERA PREGUNTAR ALGO MUY PARTICULAR SOBRE UN PROYECTO QUE TENGO EN MENTE(NO SE SI TE PARECERA INTERESANTE)PERO TE DEJO MI CORREO: alex_bueno_19@hotmail.com
|
| |
 |
No pongais los correos en el f...
por
Devjoker
Respuesta recibida el [24/09/2007 01:33:52]
|
 |
No pongais los correos en el foro ... que los spamers os van a freir con correo basura, abrir un foro y el sistema gestiona el envío de mails sin publicarlos.
|
| |
 |
MIL GRACIAS!
por
Nacho
Respuesta recibida el [31/10/2007 11:45:06]
|
 |
no sabes cuanto me sirvio este tutorial, lo lei de Pe a Pa, mañana tengo una entrevista de trabajo y me van a evaluar y con esto refresque bastantes cosas que ya las daba por olvidadas, espero que me vaya bien. Realmente te felicito por esto, habrás ayudado a mucha gente, de nuevo, gracias
|
| |
 |
Se agradece
por
Manuel
Respuesta recibida el [17/03/2008 01:04:50]
|
 |
Creo que más allá del tutorial, quiero centrarme en la inversión de tiempo, en el amor y pasión por hacer esto y entregarlo en forma gratuita, si todo el mundo tuviera gestos de estos, sería un mundo muy distinto. Creo que el dar sin esperar, nos hace libres. Muchas Gracias.
|
| |
 |
excelente
por
giovany
Respuesta recibida el [26/04/2008 06:52:56]
|
 |
es un tutorial bastante completo me ha servido de mucho gracias.
|
| |
 |
Gracias
por
Alejandro
Respuesta recibida el [13/06/2008 03:45:57]
|
 |
Esoty muy contento con el tutorial, me está facilitando las cosas y bastante. Gcias
|
| |
 |
Exelente
por
Ever
Respuesta recibida el [18/06/2008 10:35:25]
|
 |
Hola buen dia muy chido el tutorial gracias!!
|
| |
 |
muy bueno
por
miguel
Respuesta recibida el [23/06/2008 03:28:20]
|
 |
nice tutorial muy bueno
|
| |
 |
felicitaciones
por
Esteban
Respuesta recibida el [25/06/2008 01:20:15]
|
 |
realmente es excelente este tutorial.... Me ha servido mucho para iniciarme en el desconocido mundo de SQL. THANKS
|
| |
 |
agradecimiento
por
manuel
Respuesta recibida el [25/06/2008 04:24:14]
|
 |
gracias por poner estos ejemplos que son muy utiles para resolver dudas concretas que algunos podemos tener para las consultas.
|
| |
 |
agradecimiento
por
manuel
Respuesta recibida el [25/06/2008 04:24:26]
|
 |
gracias por poner estos ejemplos que son muy utiles para resolver dudas concretas que algunos podemos tener para las consultas.
|
| |
 |
Excelente
por
Pirus
Respuesta recibida el [27/06/2008 01:04:07]
|
 |
Es un gran tutorial con ejemplos muy practicos gracias
|
| |
 |
System
por
Fredy
Respuesta recibida el [14/07/2008 06:56:49]
|
 |
Realmente este tutorial me parece muy bueno, yo recien estoy aprendiendo es por ello que desearia tener amigos q me apoyen. Aqui les dejo mi MSN es: System_ym@hotmail.com
Gracias!!!
|
| |
 |
ghv fgrd trrtesrtr
por
ttrwesfdggvf gfc
Respuesta recibida el [02/08/2008 01:19:13]
|
 |
dhfgh jghfdfnbmnvncm,vbcvxcv,mcbmcvnbcvcxx slrj gsjajgfk k lerg?
|
| |
 |
MUY COMP0LETO EL MANUAL
por
ELIXA
Respuesta recibida el [14/08/2008 12:32:42]
|
 |
es un excelente manual pero alguien me ayudaria a conseguir un manual para server 2005 y la sintaxis que necesita de antemano grax
|
| |
 |
manual de sql server 2005
por
ELIXA
Respuesta recibida el [14/08/2008 12:34:13]
|
 |
les dejo mi mail elisagm_14@yahoo.com.mx
|
| |
 |
Para ELIXA
por
devjoker
Respuesta recibida el [14/08/2008 05:15:04]
|
 |
En esta misma web.
http://www.devjoker.com/asp/indice_contenido.aspx?co_grupo=TSQL&as_categoria=2
PD:Nio dejes tu mail ... si no quieres tener cientos de mails de publicidad
|
| |
 |
Gracias
por
Carlos Alberto
Respuesta recibida el [15/08/2008 03:31:22]
|
 |
Aunque es corto es 100% práctico, sin ejemplos de juguete que encuentras en cientos de libros y escuelas. Muchas gracias
|
| |
 |
Excelente
por
JulioDuran
Respuesta recibida el [24/08/2008 11:20:05]
|
 |
Muchisimas gracias, era lo que buscaba.
|
| |
 |
manual excelente
por
maria daboin
Respuesta recibida el [02/09/2008 09:25:10]
|
 |
hola, de verdad que la informaciòn suministrada es muy concreta y aclara facilmente cualquier duda. exito para el desarrollador de esta pagina.
|
| |
 |
cojan oficio
por
nana
Respuesta recibida el [26/09/2008 04:19:46]
|
 |
cojan oficiooooooooooooooooooooooooooooo
|
| |
 |
De los mejores
por
netmen
Respuesta recibida el [29/09/2008 12:54:05]
|
 |
muy bueno el tutorial de echo es de los mejores que he encontrado en la web.
|
| |
 |
PROBLEMAS CON MYSQL DEL AJAX
por
JOSE LUIS
Respuesta recibida el [04/11/2008 12:16:01]
|
 |
Me da el problema sigiente:You can't specify target table 'lux_impresiones' for update in FROM claus
UPDATE lux_impresiones SET click = click+1 WHERE id = '410' AND fecha= (SELECT MAX(fecha) FROM lux_impresiones WHERE id = '410' ) no entiendo porque.
|
| |
 |
Muy bueno
por
Eddie Lopez
Respuesta recibida el [11/11/2008 03:11:33]
|
 |
El tutorial es muy bueno yo lo tengo en mis favoritos me a servido bastaten, aplaudo al cuate que hizo esto, me quito el sombrero
|
| |
 |
Como he aprendido!!!
por
MilooliM
Respuesta recibida el [28/11/2008 03:51:34]
|
 |
Ahora voy para el de T-SQL jejeej Otra vez muchas gracias
|
| |
 |
AYUUUUUUUUDA
por
boom
Respuesta recibida el [01/12/2008 08:16:29]
|
 |
oigan porfa el que sepa de visual basic 2008 y me pude ayudar : boom_dumer@hotmail.com
|
| Añadir comentario ... |
Para preguntar utiliza los foros
|
|

|
Subconsultas |
|
Autor:
Pedro Herrarte Sánchez
|
|
Visitas:
36708 |
Fecha de publicación:
21/02/2007 |
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.
Posee mas de diez años de experiencia trabajando para las principales empresas de España.
Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.
Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).
Es fundador, diseñador y programador de www.devjoker.com. |
|
|
Visitas:
42
|
Comentarios:
0
|
Archivo:
Articulos
|
|
Visitas:
109
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
155
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
33
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
285
|
Comentarios:
1
|
Archivo:
Articulos
|
Visitas:
842
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
712
|
Comentarios:
1
|
Archivo:
Articulos
|
Visitas:
451
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
1053
|
Comentarios:
1
|
Archivo:
Articulos
|
Visitas:
250
|
Comentarios:
0
|
Archivo:
Articulos
|
|
|
|
 |
| Encuesta |
|
¿A que perfil te adaptas mejor? |
|
|
|
|
|
|
|
|
 |