Alejandro González Reyes
Edgar Stephen Tellez Garay
Usuario anónimo
UserLos Nested queries significan que dentro de un query podemos hacer otro query. Esto sirve para hacer join de tablas, estando una en memoria. También teniendo un query como condicional del otro.
Este proceso puede ser tan profundo como quieras, teniendo infinitos queries anidados. Se le conoce como un producto cartesiano ya que se multiplican todos los registros de una tabla con todos los del nuevo query. Esto provoca que el query sea difícil de procesar por lo pesado que puede resultar.
Alejandro González Reyes
Edgar Stephen Tellez Garay
Usuario anónimo
UserUsuario anónimo
UserDiego Fabian Rico Castro
Juan R. Vergara M.
Wilson Marino Pablo Mendez
Jean Nuñez
Usuario anónimo
UserChristian Gómez
Miguel Angel Herrera Cruz
Fredy Mendoza Vargas
Enrique Garcia Stave
Daniel Cabrera Ramirez
John Fredy Ramirez Bedoya
Omar Rodríguez Aldama
Julián Cárdenas
Usuario anónimo
UserJulián Cárdenas
Fernando Vela Vargas
EDGAR MERCADO GARCIA
Miguel Angel Oviedo Mejia
Jimmy Buriticá Londoño
Manuel Alejandro Muñoz Mendivil
Silvana Rolón
Felix Michael Hernandez Flery
Aldo Miguel Ortiz Parodi
Danilo Andres Cortes Lopez
René Alexander Machic Morales
Maikol Rojas Castillo
Santiago Bastidas Rodríguez
Leonardo Fabio Mercado Benítez
Nicolas Ariza
Mónica Evelyn Quevedo Devia
Leonardo Acosta
Alexander Antonio Ponce Castillo
Mi resumen de todo esto es el siguiente:
Las consultas anidadas son la mejor opción cuando los valores dependen de otras tablas, y estas no se encuentran relacionadas entre si.
Las consultas anidadas son la mejor opción para casos de INSERT, DELETE, UPDATE, cuya condición dependa del esenario explicado en el punto anterior
Los JOINS son la mejor opción para casos de SELECT
me gusta tu aporte
Muy completo.
Es increible la capacidad que tienes de reflejar tu conocimiento, ha sido una gran experiencia este curso Israel, yo habia hecho lo que has explicado, pero de manera empirica, muchas veces por inercia y al calor del momento de presion laboral pues te forjas, pero considero que el deber ser es teniendo unas solidas bases como las que proyectas, y no queda mas que de nuestro lado como estudiantes hacer practica y estar "jugando" con los datos y ver y documentar el comportamiento de los queries que hagamos.
Saludos.
Totalmente de acuerdo.
Muy deacuerdo.
Query aninado
SELECT title, date_publi, status FROM posts WHERE date_publi = ( SELECT MAX(date_publi) FROM posts );
Query normal
SELECT title, date_publi, status FROM posts ORDER BY date_publi DESC LIMIT 1;
Los querys anidado siempre y cuando exista una buena normalizacion de las tablas
Debemos cumplir los requisitos mínimos.
Nested queries
Significan que dentro de un query podemos hacer otro query. Esto sirve para hacer join de tablas, estando una en memoria. También teniendo un query como condicional del otro. . Este proceso puede ser tan profundo como quieras, teniendo infinitos queries anidados. Se le conoce como un producto cartesiano ya que se multiplican todos los registros de una tabla con todos los del nuevo query. Esto provoca que el query sea difícil de procesar por lo pesado que puede resultar. . Ejemplos: SELECT new_table_projection.date, COUNT(*) AS post_count FROM ( SELECT DATE(MIN(fecha_publicacion)) AS date, YEAR(fecha_publicacion) AS post_year FROM posts GROUP BY post_year ) AS new_table_projection GROUP BY new_table_projection.date ORDER BY new_table_projection.date; . SELECT * FROM posts WHERE fecha_publicacion = ( SELECT MAX(fecha_publicacion) FROM posts );
MUY UTIL
Util su resumen! Gracias!
Apuntes: Una nested query sirve para hacer una consulta dentro de otra consulta (normalmente dentro de la sentencia FROM o WHERE), esto funciona como alternativa para los JOIN o como condicional de un query dentro de otro. La profundidad de un nested query es infinita, por lo que se pueden hacer infinidad de consultas dentro de otras. El punto negativo de esto, es que puede volverse lento a la hora de ejecutar.
me hace recordar a las condiciones anidadas en programación, que tampoco se recomienda su uso por volverse confuso en un momento determinado y poco escalable
NESTED QUERIES o Consultas o queries anidados. ' Muy interesante. Pero considero que solo se debe aplicar cuando sea realmente necesario, este tipo de queries deben de consumir buena memoria en el momento de la ejecución cuando las bases de datos son muy robustas.
-- Crear una tabla con el campo fecha, que los cuente, los agrupe y los ordene por el -- campo fecha. La información se extraerá de la tabla posts y la fecha mínima de cada año. Select NuevaTabla.Fecha, Count(*) As Cant From ( Select Date(Min(fecha_publicacion)) As Fecha, Year(fecha_publicacion) As Año From posts Group By Año ) As NuevaTabla Group By NuevaTabla.Fecha Order By NuevaTabla.Fecha; -- Mostrar de la tabla posts la fecha máxima o las más actual. Select * From posts Where fecha_publicacion= ( Select Max(fecha_publicacion) From posts );
buen aporte
Excelente!
Los Nested Queries pueden ser de gran utilidad cuando se trata consultas de considerable complejidad. Sin embargo no se deben utilizar indiscriminadamente, sino aplicarlos según un determinado contexto.
Así es!
Se debe tener cuidado con los querys anidados ya que la complejidad computacional puede crecer de forma exponencial de acuerdo al número de registros O(n) = n^N. Se debe tener cuidado de hacerlo en querys no escalables.
Esta es una de mis Query que utilizo en mi trabajo para revisar si los datos están
SELECT * FROM caracteristicas_lotes cl WHERE NOT EXISTS (SELECT 1 FROM historico_lotes hl WHERE hl.codigo_empresa = cl.codigo_empresa AND hl.codigo_articulo = cl.codigo_articulo AND hl.numero_lote_int = cl.valor_alfa_2) AND cl.codigo_empresa = '004'``` bien asignados:
Es interesante, estas usando dos tablas para traerte una información que debe ser cruzada en un solo query.
NESTED QUEREIS consiste en seleccionar información de una tabla temporal que acabamos de crear con un Query. También se puede decir que es un Query anidado.
Excelente aporte.
En lo personal prefiero meter los sub query en una función y reutilizarlos de ser necesario
30. Mis apuntes sobre: "El interminable agujero de conejo (Nested queries)" Los queries anidados / nested queries, se usan cuando tienen un problema que no se puede solucionar solo consultando. No conviene abusar de ellos, debido a que no es escalable, y hace un uso exponencial de los recursos.
-1. Ejemplo de Código SQL:
SELECT new_table_projection.date, COUNT(*) AS posts_count FROM ( SELECT DATE(MIN(fecha_publicacion)) AS DATE, YEAR(fecha_publicacion) AS post_year FROM posts GROUP BY post_year ) AS new_table_projection GROUP BY new_table_projection.date ORDER BY new_table_projection.date;
-2. Ejemplo de Código SQL:
SELECT * FROM posts WHERE fecha_publicacion=( SELECT MAX(fecha_publicacion) FROM posts );
¿Qué diferencia hay entre una tabla temporal local y una tabla temporal global?
No se si estoy en lo correcto pero entendí que una tabla temporal se maneja en memoria(RAM) y una local es persistente(HDD, SSD) creo que esa es la diferencia. Corriganme si no estoy en lo correcto Compañeros XD.
Algunos aportes sobres los sub queries.
Las subconsultas deben estar entre paréntesis.
Una subconsulta solo puede tener una columna en la cláusula SELECT, a menos que haya varias columnas en la consulta principal para que la subconsulta compare sus columnas seleccionadas.
Un comando ORDER BY no se puede usar en una subconsulta, aunque la consulta principal puede usar ORDER BY. El comando GROUP BY se puede utilizar para realizar la misma función que ORDER BY en una subconsulta.
Las subconsultas que devuelven más de una fila solo se pueden usar con operadores de valores múltiples, como el operador IN.
La lista SELECT no puede incluir ninguna referencia a valores que se evalúen como BLOB, ARRAY, CLOB o NCLOB.
Una subconsulta no se puede encerrar inmediatamente en una función establecida.
El operador BETWEEN no se puede utilizar con una subconsulta. Sin embargo, el operador BETWEEN se puede utilizar dentro de la subconsulta.
El interminable agujero de conejo (Nested queries)
La idea fundamental de los Nested queries es que se puede tener un query dentro de otro query.
¿Cuándo ocupar los Nested queries?
Sentencias ejemplo
select new_table_projection.date, count(*) as `posts count` from ( select DATE(MIN(release_date)) as date, YEAR(release_date) as post_year from post group by post_year ) as new_table_projection group by new_table_projection.date order by new_table_projection.date;
Es muy común utilizar este tiempo de query cuando se necesita obtener valores máximos o mínimos de alguna tabla.
select * from post where release_date = ( select max(release_date) from post );
Recomendaciones
Otra forma de hacer el último query sin necesidad de anidar:
SELECT * FROM posts ORDER BY fecha_publicacion DESC LIMIT 1;
No seria ASC para que sea la fecha mas reciente ?
la sentencia DESC organizar de mayor a menor, en este caso traiería la fecha más reciente
Yo las conocia como Sub Query, son bastante buenas y generan flexibilidad
seria como bucles voraces que jalan bastante memoria básicamente!! ujumm