Eres un genio, el hecho de que puedas transmitirnos tus conocimientos y experiencia en programación mediante estos vídeos es sensacional. Muchas gracias y Saludos desde Colombia.
Hola, buen día, muchas gracias por compartir tu conocimiento, la ultima vez te doné sólo un euro, soy de México y los euros están muy caros, pero trataré de donar constantemente a tu canal, la gente como tú es la que merece ganar más. Yo soy docente de bachillerato y sé lo que significa compartir el conocimiento y nuestra labor.
Maestro! Saludos desde Latinoamerica, con usted aprendo mas y mejor que la universidad. Siga profundizándonos aun mas en el mundo del SQL. Muchas gracias.
buenas tardes, estoy aprendiendo de este genio que es Juan Gómez, me encanta su forma de enseñar y gratis, y como dice él con lo que hemos aprendido hasta este ejercicio que platea sobre buscar todos los productos que sean mayores que todos los precio de cerámica, para mi es mas fácil realizar el ejercicio buscando el máximo de la sección de cerámica y después buscar todos los artículos que sean mayores a este . este comentario los escribo por que estoy tratando de entender el operador ALL, espero sus retroalimentación. así me quedo SELECT * FROM productos WHERE PRECIO> (SELECT MAX(PRECIO) FROM productos WHERE SECCIÓN='CERAMICA')
Gracias maestro, de verdad eres un genio! Soy brasileño estoy haciendo un curso con un maestro brasileño pero que no es tan bueno cuánto tú! Bendiciones! Contigo comprendi en la primera vez que vi tu classe!
Muchas gracias por compartir sus conocimientos, que grandísimo aporte. Usted es de esos seres humanos en los que vale la pena creer en la humanidad. Saludos desde Colombia ¡Mil gracias!
18:40 Una forma muy simple de entender el uso de all y any, es viéndolos como Max y min. De echo arrojan los mismos resultados y es un ejemplo más de lo ambiguo que es el lenguaje SQL.
Soy recién egresada de economía y me encuentro en busca de trabajo, con los cursos gratuitos que nos comparte en su canal estoy aprendiendo a manejar nuevos programas para mejorar mi currículum. ¡Muchas gracias por compartir sus conocimientos!
Sensei, con usted estoy viendo Python, y busque por internet subconsultas puse el video y cuando vi era ustede Sensei que bien explica. Usted se toma el tiempo de explicar cada paso algo que no hacen en las Universidades, la mejor manera es explicar paso a paso, es mas comprendible de esta manera. Gracias.
Muchas gracias por estos videos tutoriales !!! Si no les anda el ALL pueden usar la siguiente consulta: SELECT * FROM productos WHERE precio > (SELECT MAX(precio) FROM productos WHERE seccion = "CERÁMICA"); Y Vean que les tire bien los resultados, a mi en este caso, me tiraba resultados falsos (precios menores o mayores de la seccion cerámica). La solucion a esto es cambiar el TIPO DE DATO del precio, tiene varchar(10) y es una practica muy mala poner ese tipo de dato a los precios. Cambienlo por DECIMAL y si les tira error, reemplazen las comas de los precios por los puntos. Ejemplo AR01 6.63 en vez de 6,63. Con esto se les tiene que solucionar. A mi me va bien. Saludos!
Funcionó. Añado que en mi caso tuve que añadir que, en el menú Productos>Estructura>Campo Precio Pulsar Cambiar>Setear en DECIMAL> Cotejamiento ninguno (la opción que aparece más arriba del desplegable, que está en blanco). Si ponía otros cotejamientos que probé, ese campo no se cambiaba y se quedaba en VARCHAR. Si le quito el cotejamiento me sí consigo que me aparezca el valor en lo que le especifiqué, que en este caso es DECIMAL
Me precipite un poco en la segunda subconsulta que era la subconsulta de lista pues primero escucho el ejercicio y pauso el vídeo para resolverlo yo mismo y buscar una forma de obtener el resultado antes de ver la solución y lo hice de esta forma : SELECT * FROM PRODUCTOS P WHERE P.`PRECIO` > (SELECT MAX(PE.PRECIO) FROM PRODUCTOS PE WHERE PE.SECCIÓN = 'CERÁMICA' ); -- // AQUÍ SOLO BUSQUE EL PRECIO MÁXIMO DE LA SECCIÓN CERÁMICA// Bueno igual aunque me dio el resultado realmente al ver la solución aprendí algo nuevo que es el > ALL y el > ANY Muchas gracias por compartir tu conocimiento y te felicito porque subes contenido de calidad.
Gracias por el comentario. Estás haciendo el curso de manera correcta. Se deben pausar los vídeos e intentar hacerlo uno mismo antes de ver la solución. ¡Un saludo!
Un comentario para quienes tienen problemas con los operadores. Lo primero que deben hacer es verificar el tipo de datos con los cuales se han almacenado los registros al importarlos desde .ods a MySql. Juan ya lo explicó, si bien se puede indicar que tipo de datos contiene cada celda antes de importarlos esto no siempre es respetado. Así que les sugiero lo verifiquen en el SGBD y lo corrijan desde allí. Ex: si un campo debe ser de tipo decimal y aparece como varchar, obviamente fallarán las operaciones que impliquen comparar valores numéricos sobre ellos. Y algo importante: desmarquen la opción de utilizar el '.' como separador de miles en el .ods. La mayor parte de los problemas que he leído aquí se solucionan con una correcta conversión de datos. Suerte.
Cordial saludo Don Juan; muchas gracias por la excelente explicación. En el segundo tipo de subconsultas (con all y con any), las asocio con el precio mayor o al menor, correspondiente a cierto tipo de artículo definido, respectivamente. Un saludo fraternal.
+Antonio Valderrama Hola Antonio. Yo más que asociarlas a un tipo de artículo definido, con nuestro ejemplo de la tabla de productos las asocio más a una sección o país de origen en concreto. Por ejemplo, una consulta que muestre los productos más caros que los artículos de deportes, o una consulta que muestres los artículos más baratos que los artículos españoles por poner dos ejemplos. Un saludo
Juan Gómez, antes que nada quiero felicitarte por tan excelente material y por compartir todos tus conocimientos con cada uno de los que seguimos estos videos, realmente te doy las gracias por esto.... Quisiera preguntarte algo y es en relación a este ultimo vídeo según entendí en la consulta con el comando all el busca el mayor valor de esa lista y a partir de ello lo usa como criterio para aplicar a los registros de la consulta padre.. en este orden de ideas hice dos consulas y son las siguiente: SELECT * FROM PRODUCTOS WHERE PRECIO > all (SELECT PRECIO FROM `productos` WHERE `SECCION` ="ceramica") Mostrando filas 0 - 7 (total de 8, La consulta tardó 0.0010 segundos. SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT max(PRECIO) FROM `productos` WHERE `SECCION` ="ceramica") Mostrando filas 0 - 7 (total de 8, La consulta tardó 0.0000 segundos.) Mi duda es los tiempos que me arroja el motor de base de dato si son del todo acertados ? por como se puede ver para cuestiones de rendimiento seria la misma consulta pero con otro punto de vista pero mucho mas optima en cuanto a tiempo de respuesta...
+Andres Grajales Hola !! Pues la verdad es que ahí me pillas. No se cuál de las dos consultas sería más óptima para el motor de la BBDD. Intuyo que con la primera hace una comprobación de la primera consulta con la segunda registro a registro. Sin embargo con la segunda primero hace una consulta (la interna) y el resultado lo usa como filtro para la consulta externa. Pero esto son relexiones mías que acabo de hacer porque nunca me había planteado esta cuestión en concreto. Un saludo
Hola Mil gracias por hacer los tutoriales, simplemente excelente excelente excelente, como recibir clases en una de las mejores universidades con un excelente profesor
Me gustan mucho sus vídeos, en verdad todo es tan preciso y con mucha calidad. ¡Lo felicito y tenga por seguro que recomendare ampliamente el canal! ;)
Muy buen curso. La consulta: SELECT * FROM PRODUCTOS WHERE PRECIO > ANY (SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN = "CERÁMICA") se puede hacer como SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT MIN(PRECIO) FROM PRODUCTOS WHERE SECCIÓN = "CERÁMICA") y con ALL se puede utilizar MAX, SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT MAX(PRECIO) FROM PRODUCTOS WHERE SECCIÓN = "CERÁMICA")
Muy bueno Pildoras! en la universidad te dan un pdf de teoría, presentan unos power points y te largan con la guia de ejercicios... tus videos son mucho más efectivos que eso!
Hola cómo estás, me encantan tus curso, explicas muy bien. Podrías de pronto actualizar el curso de SQL añadiendo el manejo de cursores, creación de informes y algo de programación con SQL como uso de ciclos, if etc dentro de este lenguaje. Gracias
tutor primero que todo le doy las gracias por todo estos grandiosos aportes que nos brinda!!!!.... Por otra parte yo tambien tengo el error que le da a los seguidores de su canal con la instruccion ALL, pero tambien me doy cuenta que ANY no trabaja en mi version; lo curioso es que la instruccion ALL aparece en la lista de instrucciones de autocompletado de PHPMyAdmin....
Hola, la verdad que estoy muy contento y agradecido de que existan personas como tu que impartan cursos de calidad universitaria en youtube y totalmente gratis. Quería hacerte una consulta, al comienzo del video mencionas que ya has explicado el uso de LIKE y comodines, pero yo me he visto todos los videos hasta el momento y en ninguno del curso SQL los has mencionado. Quería saber si a ese video lo has subido en otro curso. Desde ya muchas gracias
RESUELTO PROBLEMA (ALL): alguien aquí ya lo resolvió pero sin usar el ALL pero es el mismo resultado. SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT MAX(PRECIO) FROM PRODUCTOS WHERE SECCIÓN="CERÁMICA")
Hola, realmente es una pena que no te puedas dividir para llevar todos estos cursos con más rapidez, ya que cuando uno intenta avanzar por la red es raro que consiga hacerlo con la celeridad que lo hacemos contigo. Realmente creo que es muy interesante el trabajo que está realizando y ojalá que algún día te de los frutos que te mereces. A la espera de una nueva entrega del Curso de SQL, recibe un saludo.
+JOSE MARIA AGUILAR-AMAT FERNANDEZ Hola !! Gracias por el comentario. Es cierto lo que dices. hay épocas que puedo subir un vídeo diario e incluso más. Pero hay otras épocas, como la que estoy pasando ahora mismo, en las que no tengo tiempo para subir más que uno o dos a la semana. Espero que en breve mi trabajo me deje un poco más de tiempo libre y poder subir vídeos a un ritmo mayor. Un saludo
Esto lo asoció no sé si erroneamente con funciones que retornan un resultado a la función que le invocó,esta muy mal esta analogía? por cierto en serio que manera tan clara,precisa que tiene usted para enseñar,creo que he aprendido más con usted que donde estudio.
Saludos Juan; esta consulta de genera error, select * from productos where precio > ALL(select productos where sección=' cerámicas'...........#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LIMIT 0, 25' at line 1......pero cambio el ALL por el ANY y funciona sin problemas...
Hola, muchas gracias por tus enseñanzas profe. Como observación el all (en este caso) puede ser reemplazado por max(precio) dentro del select interno. :)
Hola, Juan estoy haciendo alguno de tus cursos pero en este tema de de mayor y menor la consulta no me da error pero cuándo le pongo el signo > todos los precios que me da son los más pequeños y para que me de los precios mayores que le tengo que poner < menor que y entonces me da los más altos y también los más bajos SELECT SECCIÓN, NOMBREARTÍCULO, PRECIO FROM PRODUCTOS WHERE PRECIO > ALL (SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA'); gracias
Muchas gracias por tu video, estoy haciendo un curso en coursera, y este video me ayuda a entender mejor lo que estoy viendo, ¿ el any en el primer ejemplo me muestra todos los precios mayores a 20 euros, osea al menor precio?
Hola Juanito, Gracias por tu maravillosa labor todo es grandioso!!! Y bueno, ALL compara precios de registros de consulta externa con el más caro de la consulta interna. ANY compara precios de la consulta externa con el más pequeño de la consulta interna. Agradecería confirmación o corrección de alguien.
Tengo una pregunta un poco "especial", y supongo que dependerá de muchos factores, pero aún así me parece interesante. En el caso de los ejemplos, nos encontramos que hay diferentes formas de hacer lo mismo. Por ejemplo en el ejemplo de "productos cuyo precio sea mayor que el mayor de una sección" podemos solucionarlo mediante la subconsulta de lista como has apuntado y que podríamos hacer así: SELECT SECCIÓN, NOMBREARTÍCULO, PRECIO FROM PRODUCTOS WHERE PRECIO > ALL(SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA') Pero también podemos hacer lo mismo usando una consulta escalonada de este modo: SELECT SECCIÓN, NOMBREARTÍCULO, PRECIO FROM PRODUCTOS WHERE PRECIO > (SELECT MAX(PRECIO) FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA') Mi pregunta es ¿cual es el método mas eficiente?. En el primero se supone que comparamos cada registro contra todos los de la lista, y en el segundo solo con un registro. Por otro lado en cada consulta debe de ejecutarse una subconsulta donde se busca también el mas alto. No se si me explico adecuadamente, veo que en determinados escenarios se pueden usar diferentes aproximaciones, y obviamente en tablas pequeñas no tiene importancia pero en el "mundo real" estas cosas importan.
En este caso en concreto es más óptima la segunda opción (al menos en mi opinión eso creo). Como bien dices en estas tablas pequeñas (un par de tablas o tres de 40 registros cada una) no es demasiado complicado imaginar la forma más óptima, pero en real, con BBDD y cientos de tablas relacionadas entre sí cada una de ellas con miles de registros, reconocer a priori la forma más óptima de obtener un resultado es muy muy complicado (al menos para mi). Por eso creo que en real, con casos complejos pocas veces uno hace un estudio detenido de cómo optimizar una consulta antes de realizarla. Simplemente la haces aunque probablemente no estés utilizando la forma más óptima. Luego viene el informático de sistemas de turno encargado del soporte y dice: "¿quién está lanzando un proceso contra la BBDD que está consumiendo un 90% de los recursos de red?" Y tú con el ordenador colgado esperando que tu consulta te devuelva los resultados... estas cosas pasan. Pero distinguir la forma más óptima de realizar una consulta contra BBDD cuando esta tiene 190 tablas, 85 relaciones y miles de registros... muy complicado. Un saludo!!
Es lo mismo utilizar las funciones de agregación, en una subconsulta, que usar una subconsulta con un all con alguno de los dos respectivos operadores?
Por si a alguien le ayuda, en estos casos se podría traducir ALL por "el producto más caro" y ANY por "el producto más barato". Es decir: "Selecciona los PRODUCTOS cuyo precio sea mayor (>) que (ALL) el más caro de la juguetería" / "Selecciona los PRODUCTOS cuyo precio sea mayor (>) que (ANY) el más barato de la juguetería".
No necesariamente el any es el más barato, según lo que explica el maestro es que puede tomar como valor de referencia cualquier producto. Entonces se entiende que es un valor aleatorio el que es utilizado.
Hola Juan, ante todo enhorabuena por tus cursos. Son fantásticos, desde luego, tu forma de explicar es sublime. Estoy siguiendo el curso con el gestor SQL Server 2012. Ningún problema hasta ahora en ese aspecto, pero me surge una duda con este tema de las subconsultas y los ejemplos que planteas. A efectos prácticos, ¿qué diferencia habría entre estas dos expresiones?: SELECT * FROM PRODUCTOS WHERE PRECIO > ALL (SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA'); SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT MAX(PRECIO) FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA'); Ambas devuelven los registros de los productos cuyo precio sea mayor que todos los productos de la sección de cerámica. SELECT * FROM PRODUCTOS WHERE PRECIO > ANY (SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA'); SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT MIN(PRECIO) FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA'); Ambas devuelven los registros de los productos cuyo precio sea mayor que cualquiera de los productos de la sección de cerámica. ¿Podrían utilizarse indistintamente? Muchas gracias, y una vez más, enhorabuena por el enorme trabajo que haces. Saludos desde A Coruña.
Yo nunca vi diferencias entre ambas instrucciones. Pero tal vez hay algo que yo no se... Lo que si te puedo puntualizar es que las consultas con funciones de agregado (max, min etc) deben llevar la cláusula "having" para establecer criterios en vez de "where". Un saludo!!
Muchas gracias por la respuesta y la aclaración. Tienes mucha razón con respecto a la cláusula "having" en las consultas con funciones de agregado, de hecho lo has recalcado bastante en los vídeos, empiezo este curso con 0 conocimientos de SQL y hay "cosillas" que aún me cuesta recordar. Un saludo Juan.
muy buenos videos.. tendras uno donde expliques las transacciones con mysql en php? me refiero a hacer rollback a todaas las insercciones, actualizaciones o eliminaciones cuando algo sale mal en el archivo php
Amigos, estuve revisando sobre el error ALL, al menos en mi versión de motor motor de base de datos no es mysql, es Maria DB, independientemente de que también se pueda usar phpmyAdmin, revise la documentación, corrí pruebas con los ejemplos en la misma página de maría DB a nivel línea de comandos y ni así funciona, ahora estoy haciendo una actualización de la versión 10.1.16 a la 10.1.18 aunque no estoy seguro que esto lo resuelva, de todos modos les comento el resultado si fuera positivo, saludos
Muchas gracias por el curso. Muy completo!!! Mi pregunta va relacionada con: ¿QuÉ pasaría si sustituyo ALL por MAX en el caso de subconsulta de lista que tratas en este capitulo?. Intuitivamente habria usado MAX. Gracias de antemano.
Hola !! Ya no recuerdo qué consulta estaba haciendo en este vídeo, tendría que ver mi propio vídeo para recordar. Pero tengo que decir que en ocasiones diferentes formas de hacer una subconsulta pueden devolver los mismos registros. El uso de MAX para devolver el registro con valor numérico más alto y después comprarlo con la consulta general da el mismo resultado que el uso de ALL. Me suelen preguntar cuál de las dos maneras es más eficiente y no estoy seguro. Pero creo que con MAX. Un saludo!!
Buenas noches, saludos por el gran aporte que nos brindas. Mi consulta es si se pueden hacer cubos, y si se puede, se desarrollara en esta parte del Sql
+lee paul perez carpena Hola !! Los cubos de datos dependen del gestor de BBDD que estés utilizando y no del lenguaje SQL. Por este motivo no se tratarán en este curso. Tal vez en un curso futuro de SQl Server que pienso elaborar en el futuro si trate el tema. Un saludo
Me parece que el ejemplo de ANY en este video no tendria un uso practico en la vida real, la subconsulta tiene su logica pero no me parece que un ejemplo asi en la vida real se quiera hacer esa comparacion. De todas maneras gracias por un comando mas aprendido.
Hace tiempo que grabé estos vídeos y no recuerdo bien. Es posible que no mencionara el término de subconsulta correlacionada pero creo recordar (no estoy seguro) que hice algún ejemplo de consulta y subconsulta extrayendo datos de la misma tabla utilizando funciones de agregado (lo que sería lo que se conoce como subconsulta correlacionada). Un saludo!
Buenas, este curso aun sirve para poder entender bien las sub consultas, es que me acabo de ver un curos de sql y pues el apartado de subconsultas lo noto como para poder ver un curso especificado a ellas.
BUENAS TARDES, cuando realizo la sub consulta me trae los mismos datos que a ud, pero cuando hago la consulta padre me trae datos que ni siquiera y lo hago tal cual como lo muestra el video, saludos y agradezco una respuesta. de igual forma me sucedió con la consulta de ceramica. SELECT * FROM productos WHERE PRECIO >ALL(SELECT PRECIO FROM productos WHERE SECCION='JUGUETERIA') DESTORNILLADOR 6,63 RAQUETA TENIS 93,47 MANCUERNAS 60 CAMISA CABALLERO 67,13 ALICATES 6,74 BALON BALONCESTO 75,27 DESTORNILLADOR 9,06
¿Tienes la misma información que yo en la BBDD? ¿Los nombres de los campos tienen tildes? ¿Cuando hablas de consulta padre, a qué consulta te refieres exactamente? ¿Podrías ponerla por aquí?
Hola Juan: Un par de problemillas que tuve descargando tus ficheros .OTS. El primero que al importa me da error algo así como "muchas columnas"... en el fichero a importar. Eso queda resuelto guardando el archivo en formato .csv y volviendo a importar. Entonces otro pequeño problemita es que sustituye tildes por símbolos de ?; y ese problema por más que cambié varios modos de cotejamiento no lo pude solucionar. Gracias por tus cursos, tu tiempo y tu buen hacer. Un cordial abrazo.
+Mariano VC Hola Juan. Lo puse y sigue igual. En un Mac me va perfectamente y en otro ordenador con windows 8 no funciona y sigue omitiendo las tildes. ???
pues la verdad, no sabría decirte ahora mismo a qué se debe. Intuyo que debe ser algo de la configuración del servidor del ordenador donde tienes Windows 8
Hola! Conozco todos los conceptos y sé utilizarlos, pero mi problema es que cuando leo un enunciado no sé exactamente cual he de utilizar. ¿Tienes algún truco/consejo para saber cual hay que utilizar? Por ejemplo: si sale la palabra "cada", seguramente haya que usar group by, etc...
Entendi el segundo ejemplo cuando usas "ALL" y se que es para que puedas dar un ejemplo explicando su uso, pero en este caso no seria mejor un SELECT * FROM productos WHERE precio > (SELECT MAX(precio) FROM productos WHERE seccion = 'Ceramica'); ?? Son equivalentes y mas visible ya que con ALL solo haces referencia al precio mayor y con MAX se obtiene lo mismo y un unico registro.
Hola gracias por tus vídeos podrías resolverme una duda tengo que marcar en una subconsulta en una página de clientes para diferenciarlos por nacionalidad y edad el caso es este tengo que marcar a los que sean españoles y de más de 50 años podrías ayudarme con esto por favor?
Holaaa! Tengo una gran duda con un intento de buscador que estoy haciendo con php. En primer lugar hago una consulta que me muestra por un link si la consulta tiene más de un valor y por otra si es sólo un artículo. Pero yo quiero que cuando se muestre la hoja donde están varios artículos, seleccionar alguno de ellos por medio medio un a, input o como sea y posteriormente, redirigirlo a la vista de una sólo artículo (tal cual el que seleccioné). Muchas gracias!
Hola !! La explicación de lo que pides es larga y compleja. Imposible de hacerla por aquí. Pero en mi curso de PHP se ven ejemplos en los que se hacen lo que pides. Un saludo!!
Hola, buenas! Felicitaciones por tu canal... es de lo mejor que hay! una consulta: Estoy trabajando con el paquete xampp y phpmyadmin me dice que "palabra clave no reconocida" cuando uso ALL. Esta es mi consulta: SELECT * FROM PRODUCTOS WHERE PRECIO > ALL (SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA'); Alguna idea de porque puede ser?? Muchas gracias por tu aporte!
La verdad es que no. Debería reconocer la instrucción. El código es correcto y el gestor es el mismo a pesar de trabajar con paquetes diferentes, lo cuál no debería influir para nada en esto. A ver si alguien más lo lee y aporta algo de luz.
buenas tardes maestro un gran abrazo y muchas gracias por sus aportes excelentes. he intentado la consultas pero siempre me salen los precios mas bajo . asi la hago. SELECT * FROM PRODUCTOS WHERE PRECIO> ALL (SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN="CERAMICA")
Hola como realizarian este comando pero correctamente, ya que de esta manera no se puede: MAX(COUNT(CÓDIGOCLIENTE)) FROM PEDIDOS Mi intencion es contar los pedidos de los clientes y luego obtener el que mas pedidos hizo. Como lo harían? Las tablas temporales con una buena solucion pero acces no cuenta con ellas.
Hola! estoy viendo SQL por primera vez y ya voy en este video (10), pero tengo una consulta. Hace pocos dias hice un curso de SQL query performance pensando que me enseñarian algo similar a este curso pero no, resulta que era de como hacer las querys mas performantes y trabajar en la base de datos de la forma mas eficiente posible. El profesor que dicto el curso dijo que jamas se debe poner un select dentro de otro select o dentro de un where porque este tipo de subconsultas consume muchísimos recursos y en una base de datos muy grande esto puede ocacionar problemas y que los mismos resultados se pueden conseguir con un join porque a fin de cuentas lo que se hace es cruzar tablas. Me gustaria saber tu punto de vista con respecto a esto y si crees que realmente todas las subconsultas pueden a fin de cuentas suplirse con join. Gracias!
Así es yo hice 2 SELECT y se me quemó mi ordenador. No pude controlar el incendio y se quemó toda mi casa tuve que llamar a los bomberos y salió en las noticias .....
Hola, estoy haciendo una revisión de temas relacionados a base de datos y me saltó una duda, las consultas escalonadas son llamadas también escalares?, gracias y adelante maestro
Buen video y me preguntaba si podria resolver este archivo de northwind que encontre porfavor se me complico🙏🙏 1. Crear una base de datos llamada SQLSERVER con más de dos grupos, decida los nombres, crearla en C:\Sufi. Asignar a cada archivo 30MB de tamaño inicial. 2. Cree un esquema Olimpiada y cree las tablas Promocion y Integrantes con clave foránea de Promocion en uno de los grupos creados. Inserte registros. 3. Cree una tabla llamada Mensualidad particionada por el campo del código que será nchar(12). Use por lo menos 5 particiones, decida usted a que grupo se asignará cada partición. 4. Crear un usuario que tenga los permisos para ver e insertar datos en las tablas de esquema Olimpiada. En el mismo Script, usando Northwind. 5. Crear una función llamada fduProductosPorAtender que retorne una tabla con los productos que tienen unidades por atender (Campo UnitsOnOrder) o que el Stock (UnitsinStock) es menor que el nivel de reposición (ReorderLevel). Use la función en una instrucción para crear una vista (decida usted el nombre) y muéstrela en Excel. 6. Crear una función definida por el usuario que devuelva las unidades vendidas de un producto en un determinado año. Luego liste los productos con las cantidades vendidas entre Octubre y Diciembre de 1997 que tengan un precio entre 10 y 30. 7. Cree un Trigger para la tabla Suppliers que no permita ingresar registros con el mismo nombre (CompanyName) 8. Crear un usuario (decida el nombre) con el login del mismo nombre y asigne permisos de lectura y escritura únicamente en las tablas Empleados, Clientes y Productos 9. Cree un cursor que muestre los empleados y las órdenes generadas cuya carga (Freight) sean entre 10 y 50 10. Cree una vista con las Empleados (Employees) y la cantidad de productos vendidos, así como el monto total generado, incluya los datos de la vista en una hoja del archivo de Excel 11. Crear un archivo en Excel con una lista de empleados e importar los datos en una tabla EmpleadosMaestro, asignar una PK al finalizar el proceso. El proceso de importación debe incluir las capturas de las pantallas e incluirlas en un documento de Word. 12. Crear un SP que liste código, descripción, precio y stock de los productos, luego crear un usuario que pueda ejecutar el procedimiento y que no pueda visualizar las tablas. 13. Crear un plan de Mantenimiento llamado Plan Apellidos con las siguientes características: a. Sub Plan 01: Base 1, usará la base de datos SQLSERVER i. Descripción: Plan Base Final ii. Tareas: Reducir la base de datos, Reorganizar índices, Copia de seguridad completa y Limpieza de Historial iii. Periodicidad: lunes, jueves, sábado. Cada hora a partir de las 5:00 pm b. Sub Plan 02: BaseData01, usará la base de datos Northwind i. Descripción: Plan Base Sociales ii. Tareas: Reducir la base de datos, Copia de seguridad completa y Limpieza de Mantenimiento iii. Periodicidad: martes, jueves, Domingo. Una vez a las 8:00 pm
Tienes una forma de enseñar explendida, realmente se siente un privilegio escuchar las explicaciones de formas tan claras. Muchas gracias.
Eres un genio, el hecho de que puedas transmitirnos tus conocimientos y experiencia en programación mediante estos vídeos es sensacional. Muchas gracias y Saludos desde Colombia.
Hola, buen día, muchas gracias por compartir tu conocimiento, la ultima vez te doné sólo un euro, soy de México y los euros están muy caros, pero trataré de donar constantemente a tu canal, la gente como tú es la que merece ganar más. Yo soy docente de bachillerato y sé lo que significa compartir el conocimiento y nuestra labor.
Maestro! Saludos desde Latinoamerica, con usted aprendo mas y mejor que la universidad. Siga profundizándonos aun mas en el mundo del SQL. Muchas gracias.
+Vargas Varzav Hola !! Gracias por el comentario. En ello estamos. Un saludo
12:26 Tambien funciona con esta consulta
SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT MAX(PRECIO) FROM PRODUCTOS WHERE SECCIÓN = 'CERÁMICA'
Ya decía yo eso v:.
toda la razon!!
@Angelo Rodolfo MOSCOSO VILCA exacto!
@Samir Harley we dont freaking care. get the .... out of here dammed scammer.
@Derek Porter shut up dog, we are not stupid, we know it's scam
Muchas gracias por su generosidad, no se imagina el bien que hace.
Wow! el mejor maestro del mundo, Saludo desde Republica Dominicana. Muchas Gracias por los videos
buenas tardes, estoy aprendiendo de este genio que es Juan Gómez, me encanta su forma de enseñar y gratis, y como dice él con lo que hemos aprendido hasta este ejercicio que platea sobre buscar todos los productos que sean mayores que todos los precio de cerámica, para mi es mas fácil realizar el ejercicio buscando el máximo de la sección de cerámica y después buscar todos los artículos que sean mayores a este . este comentario los escribo por que estoy tratando de entender el operador ALL, espero sus retroalimentación.
así me quedo SELECT * FROM productos WHERE PRECIO> (SELECT MAX(PRECIO) FROM productos WHERE SECCIÓN='CERAMICA')
Gracias maestro, de verdad eres un genio! Soy brasileño estoy haciendo un curso con un maestro brasileño pero que no es tan bueno cuánto tú! Bendiciones! Contigo comprendi en la primera vez que vi tu classe!
Muchas gracias por compartir sus conocimientos, que grandísimo aporte. Usted es de esos seres humanos en los que vale la pena creer en la humanidad. Saludos desde Colombia ¡Mil gracias!
De todos los que he visto eres el mejor que lo explica
18:40 Una forma muy simple de entender el uso de all y any, es viéndolos como Max y min. De echo arrojan los mismos resultados y es un ejemplo más de lo ambiguo que es el lenguaje SQL.
Soy recién egresada de economía y me encuentro en busca de trabajo, con los cursos gratuitos que nos comparte en su canal estoy aprendiendo a manejar nuevos programas para mejorar mi currículum. ¡Muchas gracias por compartir sus conocimientos!
Gracias por tu comentario y por seguir mis vídeos. Un saludo!
Gracias Juan, eres el mejor profesor que he tenido, tienes una metodología para explicar impecable. Un saludo
Definitivamente el Mejor maestro. Saludos desde República Dominicana
+Anderson Moreta Muchas gracias !! Un saludo
Te quiero mucho Píldoras informáticas
Es mutuo
Sensei, con usted estoy viendo Python, y busque por internet subconsultas puse el video y cuando vi era ustede Sensei que bien explica.
Usted se toma el tiempo de explicar cada paso algo que no hacen en las Universidades, la mejor manera es explicar paso a paso, es mas comprendible de esta manera.
Gracias.
Gracias por el comentario Bryan. UN saludo!
Muchas gracias por estos videos tutoriales !!!
Si no les anda el ALL pueden usar la siguiente consulta:
SELECT * FROM productos WHERE precio > (SELECT MAX(precio) FROM productos WHERE seccion = "CERÁMICA");
Y Vean que les tire bien los resultados, a mi en este caso, me tiraba resultados falsos (precios menores o mayores de la seccion cerámica). La solucion a esto es cambiar el TIPO DE DATO del precio, tiene varchar(10) y es una practica muy mala poner ese tipo de dato a los precios. Cambienlo por DECIMAL y si les tira error, reemplazen las comas de los precios por los puntos. Ejemplo AR01 6.63 en vez de 6,63. Con esto se les tiene que solucionar. A mi me va bien. Saludos!
Funcionó. Añado que en mi caso tuve que añadir que, en el menú Productos>Estructura>Campo Precio Pulsar Cambiar>Setear en DECIMAL> Cotejamiento ninguno (la opción que aparece más arriba del desplegable, que está en blanco). Si ponía otros cotejamientos que probé, ese campo no se cambiaba y se quedaba en VARCHAR. Si le quito el cotejamiento me sí consigo que me aparezca el valor en lo que le especifiqué, que en este caso es DECIMAL
Me precipite un poco en la segunda subconsulta que era la subconsulta de lista pues primero escucho el ejercicio y pauso el vídeo para resolverlo yo mismo y buscar una forma de obtener el resultado antes de ver la solución y lo hice de esta forma :
SELECT * FROM PRODUCTOS P
WHERE P.`PRECIO` > (SELECT MAX(PE.PRECIO) FROM PRODUCTOS PE
WHERE PE.SECCIÓN = 'CERÁMICA' ); -- // AQUÍ SOLO BUSQUE EL PRECIO
MÁXIMO DE LA SECCIÓN
CERÁMICA//
Bueno igual aunque me dio el resultado realmente al ver la solución aprendí algo nuevo
que es el > ALL y el > ANY
Muchas gracias por compartir tu conocimiento y te felicito porque subes contenido de calidad.
Gracias por el comentario. Estás haciendo el curso de manera correcta. Se deben pausar los vídeos e intentar hacerlo uno mismo antes de ver la solución. ¡Un saludo!
Cordial saludo Ingeniero; muchas gracias por la excelente colaboración. Entendido al 100%, gracias.
Excelente, llevo varios dias estudiando y creando mi BD y estoy aprendiendo mucho
Un comentario para quienes tienen problemas con los operadores. Lo primero que deben hacer es verificar el tipo de datos con los cuales se han almacenado los registros al importarlos desde .ods a MySql. Juan ya lo explicó, si bien se puede indicar que tipo de datos contiene cada celda antes de importarlos esto no siempre es respetado. Así que les sugiero lo verifiquen en el SGBD y lo corrijan desde allí. Ex: si un campo debe ser de tipo decimal y aparece como varchar, obviamente fallarán las operaciones que impliquen comparar valores numéricos sobre ellos. Y algo importante: desmarquen la opción de utilizar el '.' como separador de miles en el .ods. La mayor parte de los problemas que he leído aquí se solucionan con una correcta conversión de datos. Suerte.
Perfecta explicación. Muchas gracias por compartir tus conocimientos.
Saludos desde España, Valencia.
+Miguel Angel Piquer Ubeda Gracias por el comentario. Un saludo!!
Da muy buenas clases, haciendo que lo complejo se vuelva accesible
Cordial saludo Don Juan; muchas gracias por la excelente explicación.
En el segundo tipo de subconsultas (con all y con any), las asocio con el precio mayor o al menor, correspondiente a cierto tipo de artículo definido, respectivamente.
Un saludo fraternal.
+Antonio Valderrama Hola Antonio. Yo más que asociarlas a un tipo de artículo definido, con nuestro ejemplo de la tabla de productos las asocio más a una sección o país de origen en concreto. Por ejemplo, una consulta que muestre los productos más caros que los artículos de deportes, o una consulta que muestres los artículos más baratos que los artículos españoles por poner dos ejemplos.
Un saludo
Juan Gómez, antes que nada quiero felicitarte por tan excelente material y por compartir todos tus conocimientos con cada uno de los que seguimos estos videos, realmente te doy las gracias por esto.... Quisiera preguntarte algo y es en relación a este ultimo vídeo según entendí en la consulta con el comando all el busca el mayor valor de esa lista y a partir de ello lo usa como criterio para aplicar a los registros de la consulta padre.. en este orden de ideas hice dos consulas y son las siguiente:
SELECT * FROM PRODUCTOS WHERE PRECIO > all (SELECT PRECIO FROM `productos` WHERE `SECCION` ="ceramica")
Mostrando filas 0 - 7 (total de 8, La consulta tardó 0.0010 segundos.
SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT max(PRECIO) FROM `productos` WHERE `SECCION` ="ceramica")
Mostrando filas 0 - 7 (total de 8, La consulta tardó 0.0000 segundos.)
Mi duda es los tiempos que me arroja el motor de base de dato si son del todo acertados ? por como se puede ver para cuestiones de rendimiento seria la misma consulta pero con otro punto de vista pero mucho mas optima en cuanto a tiempo de respuesta...
+Andres Grajales Hola !! Pues la verdad es que ahí me pillas. No se cuál de las dos consultas sería más óptima para el motor de la BBDD. Intuyo que con la primera hace una comprobación de la primera consulta con la segunda registro a registro. Sin embargo con la segunda primero hace una consulta (la interna) y el resultado lo usa como filtro para la consulta externa.
Pero esto son relexiones mías que acabo de hacer porque nunca me había planteado esta cuestión en concreto.
Un saludo
Hola Mil gracias por hacer los tutoriales, simplemente excelente excelente excelente, como recibir clases en una de las mejores universidades con un excelente profesor
+educacioninformatica Gracias !! Me alegro de que te gusten los vídeos. Un saludo!!
Muy bien explicado, sobre todo me he aclarado todo el ejemplo del final.
Me gustan mucho sus vídeos, en verdad todo es tan preciso y con mucha calidad. ¡Lo felicito y tenga por seguro que recomendare ampliamente el canal! ;)
+RAFAEL CISNEROS Muchas gracias !! Me alegro de que te gusten los vídeos. Un saludo!!
el mejor profesor de youtobe
muchas gracias estaba leyendo sobre subconsultas y no entendia y este video lo explico todo muy bien entendi rapido muchas gracias
Muy buen curso. La consulta: SELECT * FROM PRODUCTOS WHERE PRECIO > ANY (SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN = "CERÁMICA") se puede hacer como SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT MIN(PRECIO) FROM PRODUCTOS WHERE SECCIÓN = "CERÁMICA") y con ALL se puede utilizar MAX, SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT MAX(PRECIO) FROM PRODUCTOS WHERE SECCIÓN = "CERÁMICA")
Muy bueno Pildoras! en la universidad te dan un pdf de teoría, presentan unos power points y te largan con la guia de ejercicios... tus videos son mucho más efectivos que eso!
Gracias por el comentario. Me alegro de que te gusten los vídeos. Un saludo!!
Gracias maestro. Sin palabras. Excelente video!
Excelente todo muy claro como el viento.
Me vi todos los videos de este curso hasta aca y no recuerdo haber visto LIKE...
Eres el mejor, Juan!!
Muy interesante el tema. He disfrutado mucho con ello
Gracias Crack!!!!
+Lewis V jejej gracias!! Un saludo
Eres muy aspero hahaha, ojala hubiese visto esto cuando vi mi curso de bases de datos, muy bien explicado felicitaciones
Gracias Juan.
Muchas gracias me sirvió de mucha ayuda!
Felicitaciones!!!. Buen video.
Hola cómo estás, me encantan tus curso, explicas muy bien. Podrías de pronto actualizar el curso de SQL añadiendo el manejo de cursores, creación de informes y algo de programación con SQL como uso de ciclos, if etc dentro de este lenguaje. Gracias
Muchísimas gracias
muy buen video, muchas gracias!!!!
Excelente video, muy bien explicado
Gracias !! Un saludo
tutor primero que todo le doy las gracias por todo estos grandiosos aportes que nos brinda!!!!....
Por otra parte yo tambien tengo el error que le da a los seguidores de su canal con la instruccion ALL, pero tambien me doy cuenta que ANY no trabaja en mi version; lo curioso es que la instruccion ALL aparece en la lista de instrucciones de autocompletado de PHPMyAdmin....
Si, ya lo he leído en otros comentarios. Es algo que tengo que investigar cuando tenga un rato porque no se a qué puede ser debido. Un saludo!!
un master. No me sorprendería que juan saque algo por alli que le haga competencia a Marck Zuckegber o a Bill Gates
Pues a mi si me sorprendería :))
Hola, la verdad que estoy muy contento y agradecido de que existan personas como tu que impartan cursos de calidad universitaria en youtube y totalmente gratis. Quería hacerte una consulta, al comienzo del video mencionas que ya has explicado el uso de LIKE y comodines, pero yo me he visto todos los videos hasta el momento y en ninguno del curso SQL los has mencionado. Quería saber si a ese video lo has subido en otro curso. Desde ya muchas gracias
RESUELTO PROBLEMA (ALL): alguien aquí ya lo resolvió pero sin usar el ALL pero es el mismo resultado.
SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT MAX(PRECIO) FROM PRODUCTOS WHERE SECCIÓN="CERÁMICA")
Exacto. En este caso puntual también funcionaría.
Ahí estás trasnformando una subconsulta de lista en una escalonada, pero sí, funciona
genial gracias!!!
En 2023 muchas gracias ❤
2020 ! vengo de python...gracias maestro !!
Hola, realmente es una pena que no te puedas dividir para llevar todos estos cursos con más rapidez, ya que cuando uno intenta avanzar por la red es raro que consiga hacerlo con la celeridad que lo hacemos contigo. Realmente creo que es muy interesante el trabajo que está realizando y ojalá que algún día te de los frutos que te mereces. A la espera de una nueva entrega del Curso de SQL, recibe un saludo.
+JOSE MARIA AGUILAR-AMAT FERNANDEZ Hola !! Gracias por el comentario. Es cierto lo que dices. hay épocas que puedo subir un vídeo diario e incluso más. Pero hay otras épocas, como la que estoy pasando ahora mismo, en las que no tengo tiempo para subir más que uno o dos a la semana.
Espero que en breve mi trabajo me deje un poco más de tiempo libre y poder subir vídeos a un ritmo mayor. Un saludo
Esto lo asoció no sé si erroneamente con funciones que retornan un resultado a la función que le invocó,esta muy mal esta analogía? por cierto en serio que manera tan clara,precisa que tiene usted para enseñar,creo que he aprendido más con usted que donde estudio.
+Easylisimo La analogía es perfecta. Realmente es como funciona. Gracias por el comentario. Un saludo!!
gracias amigo
Saludos Juan; esta consulta de genera error, select * from productos where precio > ALL(select productos where sección=' cerámicas'...........#1064 - You have an error in your SQL syntax; check the manual
that corresponds to your MariaDB server version for the right syntax to
use near 'LIMIT 0, 25' at line 1......pero cambio el ALL por el ANY y funciona sin problemas...
Hay un error en el segundo select. No le especificas los campos a la consulta. Un saludo!!
gracias
Hola, muchas gracias por tus enseñanzas profe. Como observación el all (en este caso) puede ser reemplazado por max(precio) dentro del select interno. :)
Hola, Juan estoy haciendo alguno de tus cursos pero en este tema de de mayor y menor la consulta no me da error pero cuándo le pongo el signo > todos los precios que me da son los más pequeños y para que me de los precios mayores que le tengo que poner < menor que y entonces me da los más altos y también los más bajos
SELECT SECCIÓN, NOMBREARTÍCULO, PRECIO FROM PRODUCTOS WHERE PRECIO > ALL (SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA');
gracias
Tenemos el mismo problema desde MYSQL
EL MEJOR
Muchas gracias por tu video, estoy haciendo un curso en coursera, y este video me ayuda a entender mejor lo que estoy viendo, ¿ el any en el primer ejemplo me muestra todos los precios mayores a 20 euros, osea al menor precio?
Muy bueno master
muy bien expicado brother likeee
Gracias !!
Hola Juanito, Gracias por tu maravillosa labor todo es grandioso!!!
Y bueno, ALL compara precios de registros de consulta externa con el más caro de la consulta interna.
ANY compara precios de la consulta externa con el más pequeño de la consulta interna.
Agradecería confirmación o corrección de alguien.
A mi el any me cuesta verlo...pero por el ejemplo entiendo que si, any compara con el más pequeño de la subconsulta.
Exelente
Tengo una pregunta un poco "especial", y supongo que dependerá de muchos factores, pero aún así me parece interesante.
En el caso de los ejemplos, nos encontramos que hay diferentes formas de hacer lo mismo. Por ejemplo en el ejemplo de "productos cuyo precio sea mayor que el mayor de una sección" podemos solucionarlo mediante la subconsulta de lista como has apuntado y que podríamos hacer así:
SELECT SECCIÓN, NOMBREARTÍCULO, PRECIO FROM PRODUCTOS WHERE PRECIO > ALL(SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA')
Pero también podemos hacer lo mismo usando una consulta escalonada de este modo:
SELECT SECCIÓN, NOMBREARTÍCULO, PRECIO FROM PRODUCTOS WHERE PRECIO > (SELECT MAX(PRECIO) FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA')
Mi pregunta es ¿cual es el método mas eficiente?. En el primero se supone que comparamos cada registro contra todos los de la lista, y en el segundo solo con un registro. Por otro lado en cada consulta debe de ejecutarse una subconsulta donde se busca también el mas alto.
No se si me explico adecuadamente, veo que en determinados escenarios se pueden usar diferentes aproximaciones, y obviamente en tablas pequeñas no tiene importancia pero en el "mundo real" estas cosas importan.
En este caso en concreto es más óptima la segunda opción (al menos en mi opinión eso creo). Como bien dices en estas tablas pequeñas (un par de tablas o tres de 40 registros cada una) no es demasiado complicado imaginar la forma más óptima, pero en real, con BBDD y cientos de tablas relacionadas entre sí cada una de ellas con miles de registros, reconocer a priori la forma más óptima de obtener un resultado es muy muy complicado (al menos para mi).
Por eso creo que en real, con casos complejos pocas veces uno hace un estudio detenido de cómo optimizar una consulta antes de realizarla. Simplemente la haces aunque probablemente no estés utilizando la forma más óptima. Luego viene el informático de sistemas de turno encargado del soporte y dice: "¿quién está lanzando un proceso contra la BBDD que está consumiendo un 90% de los recursos de red?" Y tú con el ordenador colgado esperando que tu consulta te devuelva los resultados... estas cosas pasan. Pero distinguir la forma más óptima de realizar una consulta contra BBDD cuando esta tiene 190 tablas, 85 relaciones y miles de registros... muy complicado. Un saludo!!
Es lo mismo utilizar las funciones de agregación, en una subconsulta, que usar una subconsulta con un all con alguno de los dos respectivos operadores?
Por si a alguien le ayuda, en estos casos se podría traducir ALL por "el producto más caro" y ANY por "el producto más barato". Es decir: "Selecciona los PRODUCTOS cuyo precio sea mayor (>) que (ALL) el más caro de la juguetería" / "Selecciona los PRODUCTOS cuyo precio sea mayor (>) que (ANY) el más barato de la juguetería".
No necesariamente el any es el más barato, según lo que explica el maestro es que puede tomar como valor de referencia cualquier producto. Entonces se entiende que es un valor aleatorio el que es utilizado.
Hola Juan, ante todo enhorabuena por tus cursos. Son fantásticos, desde luego, tu forma de explicar es sublime. Estoy siguiendo el curso con el gestor SQL Server 2012. Ningún problema hasta ahora en ese aspecto, pero me surge una duda con este tema de las subconsultas y los ejemplos que planteas. A efectos prácticos, ¿qué diferencia habría entre estas dos expresiones?:
SELECT * FROM PRODUCTOS WHERE PRECIO > ALL (SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA');
SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT MAX(PRECIO) FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA');
Ambas devuelven los registros de los productos cuyo precio sea mayor que todos los productos de la sección de cerámica.
SELECT * FROM PRODUCTOS WHERE PRECIO > ANY (SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA');
SELECT * FROM PRODUCTOS WHERE PRECIO > (SELECT MIN(PRECIO) FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA');
Ambas devuelven los registros de los productos cuyo precio sea mayor que cualquiera de los productos de la sección de cerámica. ¿Podrían utilizarse indistintamente? Muchas gracias, y una vez más, enhorabuena por el enorme trabajo que haces. Saludos desde A Coruña.
Yo nunca vi diferencias entre ambas instrucciones. Pero tal vez hay algo que yo no se... Lo que si te puedo puntualizar es que las consultas con funciones de agregado (max, min etc) deben llevar la cláusula "having" para establecer criterios en vez de "where". Un saludo!!
Muchas gracias por la respuesta y la aclaración. Tienes mucha razón con respecto a la cláusula "having" en las consultas con funciones de agregado, de hecho lo has recalcado bastante en los vídeos, empiezo este curso con 0 conocimientos de SQL y hay "cosillas" que aún me cuesta recordar. Un saludo Juan.
muy buenos videos.. tendras uno donde expliques las transacciones con mysql en php? me refiero a hacer rollback a todaas las insercciones, actualizaciones o eliminaciones cuando algo sale mal en el archivo php
No en este curso. Pero es muy posible que lo vea en mi curso de PHP que aún está en elaboración. Un saludo!!
Amigos, estuve revisando sobre el error ALL, al menos en mi versión de motor motor de base de datos no es mysql, es Maria DB, independientemente de que también se pueda usar phpmyAdmin, revise la documentación, corrí pruebas con los ejemplos en la misma página de maría DB a nivel línea de comandos y ni así funciona, ahora estoy haciendo una actualización de la versión 10.1.16 a la 10.1.18 aunque no estoy seguro que esto lo resuelva, de todos modos les comento el resultado si fuera positivo, saludos
y bueno como te fue??
like, muy bien explicado
Muchas gracias me quede bloqueado en un ejercicio de clase y solo me ha bastado 6 min de video para entenderlo y hacerlo
Pues me alegro de que le vídeo haya ayudado. Un saludo!!
Muchas gracias por el curso. Muy completo!!! Mi pregunta va relacionada con: ¿QuÉ pasaría si sustituyo ALL por MAX en el caso de subconsulta de lista que tratas en este capitulo?. Intuitivamente habria usado MAX. Gracias de antemano.
Hola !! Ya no recuerdo qué consulta estaba haciendo en este vídeo, tendría que ver mi propio vídeo para recordar. Pero tengo que decir que en ocasiones diferentes formas de hacer una subconsulta pueden devolver los mismos registros. El uso de MAX para devolver el registro con valor numérico más alto y después comprarlo con la consulta general da el mismo resultado que el uso de ALL. Me suelen preguntar cuál de las dos maneras es más eficiente y no estoy seguro. Pero creo que con MAX. Un saludo!!
Buenas noches, saludos por el gran aporte que nos brindas. Mi consulta es si se pueden hacer cubos, y si se puede, se desarrollara en esta parte del Sql
+lee paul perez carpena Hola !! Los cubos de datos dependen del gestor de BBDD que estés utilizando y no del lenguaje SQL. Por este motivo no se tratarán en este curso. Tal vez en un curso futuro de SQl Server que pienso elaborar en el futuro si trate el tema.
Un saludo
Seria excelente maestro, yo en realidad le estoy siguiendo su clases en el SQL server
SKERE
Me parece que el ejemplo de ANY en este video no tendria un uso practico en la vida real, la subconsulta tiene su logica pero no me parece que un ejemplo asi en la vida real se quiera hacer esa comparacion. De todas maneras gracias por un comando mas aprendido.
genio
Juan, hola, no vi que hablaras de la subconsulta correlacionada, me perdí o no lo hiciste?, gracias. En el vídeo 11 tampoco lo hablas.
Hace tiempo que grabé estos vídeos y no recuerdo bien. Es posible que no mencionara el término de subconsulta correlacionada pero creo recordar (no estoy seguro) que hice algún ejemplo de consulta y subconsulta extrayendo datos de la misma tabla utilizando funciones de agregado (lo que sería lo que se conoce como subconsulta correlacionada). Un saludo!
@@pildorasinformaticas Si lo hiciste, gracias.
Buenas, este curso aun sirve para poder entender bien las sub consultas, es que me acabo de ver un curos de sql y pues el apartado de subconsultas lo noto como para poder ver un curso especificado a ellas.
SQL no ha cambiado en los últimos años. Todo lo que aparece en este curso sirve perfectamente a día de hoy (29-10-24). ¡Saludos!
BUENAS TARDES, cuando realizo la sub consulta me trae los mismos datos que a ud, pero cuando hago la consulta padre me trae datos que ni siquiera y lo hago tal cual como lo muestra el video, saludos y agradezco una respuesta.
de igual forma me sucedió con la consulta de ceramica.
SELECT * FROM productos WHERE PRECIO >ALL(SELECT PRECIO FROM productos WHERE SECCION='JUGUETERIA')
DESTORNILLADOR 6,63
RAQUETA TENIS 93,47
MANCUERNAS 60
CAMISA CABALLERO 67,13
ALICATES 6,74
BALON BALONCESTO 75,27
DESTORNILLADOR 9,06
¿Tienes la misma información que yo en la BBDD? ¿Los nombres de los campos tienen tildes? ¿Cuando hablas de consulta padre, a qué consulta te refieres exactamente? ¿Podrías ponerla por aquí?
imgur.com/MXlshgp
LOGRASTE SOLUCIONAR.... TB ME PASA LO MISMO...
los archivos com los problemas para resolver maestro eso ayuda mucho excelente aporte del video 9 en adelante no tiene no hay archivos de ejercicios
Hola !! Ya, ya lo se. Los voy haciendo poco a poco cuanto tengo algo de tiempo. Un saludo!!
Hola Juan:
Un par de problemillas que tuve descargando tus ficheros .OTS.
El primero que al importa me da error algo así como "muchas columnas"... en el fichero a importar. Eso queda resuelto guardando el archivo en formato .csv y volviendo a importar.
Entonces otro pequeño problemita es que sustituye tildes por símbolos de ?; y ese problema por más que cambié varios modos de cotejamiento no lo pude solucionar.
Gracias por tus cursos, tu tiempo y tu buen hacer. Un cordial abrazo.
+Mariano VC Hola !! Gracias por el comentario. ¿Has probado con UTF8-general?
+Mariano VC Hola Juan. Lo puse y sigue igual. En un Mac me va perfectamente y en otro ordenador con windows 8 no funciona y sigue omitiendo las tildes. ???
pues la verdad, no sabría decirte ahora mismo a qué se debe. Intuyo que debe ser algo de la configuración del servidor del ordenador donde tienes Windows 8
Buenas Juan, habra un curso de Postgre SQL ?
Genio
Hola! Conozco todos los conceptos y sé utilizarlos, pero mi problema es que cuando leo un enunciado no sé exactamente cual he de utilizar. ¿Tienes algún truco/consejo para saber cual hay que utilizar? Por ejemplo: si sale la palabra "cada", seguramente haya que usar group by, etc...
No me funciona el ALL
Me gustaria saber en algun caso en que no podria resolver con max() pero si con all
como se llama la app para pintar asi la pantalla
Entendi el segundo ejemplo cuando usas "ALL" y se que es para que puedas dar un ejemplo explicando su uso, pero en este caso no seria mejor un SELECT * FROM productos WHERE precio > (SELECT MAX(precio) FROM productos WHERE seccion = 'Ceramica'); ?? Son equivalentes y mas visible ya que con ALL solo haces referencia al precio mayor y con MAX se obtiene lo mismo y un unico registro.
Hola gracias por tus vídeos podrías resolverme una duda tengo que marcar en una subconsulta en una página de clientes para diferenciarlos por nacionalidad y edad el caso es este tengo que marcar a los que sean españoles y de más de 50 años podrías ayudarme con esto por favor?
Hola
DIsculpa , me quede en un vídeo donde venía algo de sql injection pero ya no lo encuentro =(
+mario hdz ruclips.net/video/3Qw3QQg1xYU/видео.html
Un saludo
Holaaa! Tengo una gran duda con un intento de buscador que estoy haciendo con php. En primer lugar hago una consulta que me muestra por un link si la consulta tiene más de un valor y por otra si es sólo un artículo. Pero yo quiero que cuando se muestre la hoja donde están varios artículos, seleccionar alguno de ellos por medio medio un a, input o como sea y posteriormente, redirigirlo a la vista de una sólo artículo (tal cual el que seleccioné). Muchas gracias!
Hola !! La explicación de lo que pides es larga y compleja. Imposible de hacerla por aquí. Pero en mi curso de PHP se ven ejemplos en los que se hacen lo que pides. Un saludo!!
Lo único donde pude basarme es en la creación del buscador. Hacer lo demás si es complicado :S
Hola, buenas! Felicitaciones por tu canal... es de lo mejor que hay! una consulta:
Estoy trabajando con el paquete xampp y phpmyadmin me dice que "palabra clave no reconocida" cuando uso ALL. Esta es mi consulta: SELECT * FROM PRODUCTOS WHERE PRECIO > ALL (SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN='CERÁMICA');
Alguna idea de porque puede ser?? Muchas gracias por tu aporte!
La verdad es que no. Debería reconocer la instrucción. El código es correcto y el gestor es el mismo a pesar de trabajar con paquetes diferentes, lo cuál no debería influir para nada en esto. A ver si alguien más lo lee y aporta algo de luz.
buenas tardes maestro un gran abrazo y muchas gracias por sus aportes excelentes. he intentado la consultas pero siempre me salen los precios mas bajo . asi la hago.
SELECT * FROM PRODUCTOS WHERE PRECIO> ALL (SELECT PRECIO FROM PRODUCTOS WHERE SECCIÓN="CERAMICA")
Intenta con Select * From Productos Where Precio > (Select Max(Precio) From Productos Where Sección="Cerámica")
Hola como realizarian este comando pero correctamente, ya que de esta manera no se puede:
MAX(COUNT(CÓDIGOCLIENTE)) FROM PEDIDOS
Mi intencion es contar los pedidos de los clientes y luego obtener el que mas pedidos hizo. Como lo harían? Las tablas temporales con una buena solucion pero acces no cuenta con ellas.
Hola! estoy viendo SQL por primera vez y ya voy en este video (10), pero tengo una consulta. Hace pocos dias hice un curso de SQL query performance pensando que me enseñarian algo similar a este curso pero no, resulta que era de como hacer las querys mas performantes y trabajar en la base de datos de la forma mas eficiente posible. El profesor que dicto el curso dijo que jamas se debe poner un select dentro de otro select o dentro de un where porque este tipo de subconsultas consume muchísimos recursos y en una base de datos muy grande esto puede ocacionar problemas y que los mismos resultados se pueden conseguir con un join porque a fin de cuentas lo que se hace es cruzar tablas.
Me gustaria saber tu punto de vista con respecto a esto y si crees que realmente todas las subconsultas pueden a fin de cuentas suplirse con join. Gracias!
Así es yo hice 2 SELECT y se me quemó mi ordenador. No pude controlar el incendio y se quemó toda mi casa tuve que llamar a los bomberos y salió en las noticias .....
Hola Buenas noche
quiero una ayuda
es saber cuando se modifico o inserto un registro en una tablas en sql server
Hola, estoy haciendo una revisión de temas relacionados a base de datos y me saltó una duda, las consultas escalonadas son llamadas también escalares?, gracias y adelante maestro
Buen video y me preguntaba si podria resolver este archivo de northwind que encontre porfavor se me complico🙏🙏
1. Crear una base de datos llamada SQLSERVER con más de dos grupos, decida los nombres, crearla en C:\Sufi. Asignar
a cada archivo 30MB de tamaño inicial.
2. Cree un esquema Olimpiada y cree las tablas Promocion y Integrantes con clave foránea de Promocion en uno
de los grupos creados. Inserte registros.
3. Cree una tabla llamada Mensualidad particionada por el campo del código que será nchar(12). Use por lo menos
5 particiones, decida usted a que grupo se asignará cada partición.
4. Crear un usuario que tenga los permisos para ver e insertar datos en las tablas de esquema Olimpiada.
En el mismo Script, usando Northwind.
5. Crear una función llamada fduProductosPorAtender que retorne una tabla con los productos que tienen unidades
por atender (Campo UnitsOnOrder) o que el Stock (UnitsinStock) es menor que el nivel de reposición
(ReorderLevel). Use la función en una instrucción para crear una vista (decida usted el nombre) y muéstrela en
Excel.
6. Crear una función definida por el usuario que devuelva las unidades vendidas de un producto en un determinado
año. Luego liste los productos con las cantidades vendidas entre Octubre y Diciembre de 1997 que tengan un precio
entre 10 y 30.
7. Cree un Trigger para la tabla Suppliers que no permita ingresar registros con el mismo nombre (CompanyName)
8. Crear un usuario (decida el nombre) con el login del mismo nombre y asigne permisos de lectura y escritura
únicamente en las tablas Empleados, Clientes y Productos
9. Cree un cursor que muestre los empleados y las órdenes generadas cuya carga (Freight) sean entre 10 y 50
10. Cree una vista con las Empleados (Employees) y la cantidad de productos vendidos, así como el monto total
generado, incluya los datos de la vista en una hoja del archivo de Excel
11. Crear un archivo en Excel con una lista de empleados e importar los datos en una tabla EmpleadosMaestro,
asignar una PK al finalizar el proceso. El proceso de importación debe incluir las capturas de las pantallas e
incluirlas en un documento de Word.
12. Crear un SP que liste código, descripción, precio y stock de los productos, luego crear un usuario que pueda
ejecutar el procedimiento y que no pueda visualizar las tablas.
13. Crear un plan de Mantenimiento llamado Plan Apellidos con las siguientes características:
a. Sub Plan 01: Base 1, usará la base de datos SQLSERVER
i. Descripción: Plan Base Final
ii. Tareas: Reducir la base de datos, Reorganizar índices, Copia de seguridad completa y
Limpieza de Historial
iii. Periodicidad: lunes, jueves, sábado. Cada hora a partir de las 5:00 pm
b. Sub Plan 02: BaseData01, usará la base de datos Northwind
i. Descripción: Plan Base Sociales
ii. Tareas: Reducir la base de datos, Copia de seguridad completa y Limpieza de
Mantenimiento
iii. Periodicidad: martes, jueves, Domingo. Una vez a las 8:00 pm