Ejercicios SQL - Consultas #4 - Multitablas en empleados y departamentos (MySQL)

Sdílet
Vložit
  • čas přidán 5. 09. 2024
  • - ¿Necesitas que sea tu tutor personal? www.discodurod...
    - Consigue cupones de descuento de mis cursos de udemy: cupones.discod...
    - Sigue mis próximos eventos: eventos.discod...
    - Visita nuestra web: www.discodurode...
    - ¿Necesitas un servidor de calidad? Webempresa te lo da. clientes.webem...
    - ¿Quieres seguir nuestros trabajos? Visita nuestro github. github.com/Dis...
    - ¡Sé nuestro patrón! / discoduroderoer
    - Síguenos en las redes sociales:
    - Facebook: goo.gl/JcLshS
    - Twitter: goo.gl/MU2Gbo
    - Google+: goo.gl/8U8aXt
    - CZcams: goo.gl/5vjkGP o suscribete
    - Discord: / discord
    - Twitch: / discoduroderoer_prog
    - Si quieres contactar con nosotros para alguna consulta o enviarnos ejercicios: administrador@discoduroderoer.es
    - Enunciado:
    20. Obtener el nombre y el departamento de los empleados con cargo 'Secretaria' o 'Vendedor', que
    no trabajan en el departamento de “PRODUCCION”, cuyo salario es superior a $1.000.000,
    ordenados por fecha de incorporación.
    21. Obtener información de los empleados cuyo nombre tiene exactamente 11 caracteres
    22. Obtener información de los empleados cuyo nombre tiene al menos 11 caracteres
    23. Listar los datos de los empleados cuyo nombre inicia por la letra 'M', su salario es mayor a $800.000
    o reciben comisión y trabajan para el departamento de 'VENTAS'
    24. Obtener los nombres, salarios y comisiones de los empleados que reciben un salario situado entre la
    mitad de la comisión la propia comisión
    - Descarga de los proyectos y enunciados: github.com/Dis...
    - Recopilación de descargas de los videos de youtube: www.discodurod...

Komentáře • 40

  • @danisotelo3848
    @danisotelo3848 Před 6 lety +22

    Muy buenas, estoy estudiando base de datos y me estoy repasando todos tus ejercicios y el número 20 a parte de que se te olvidó ejecutarlo, estaría mal, porque no sale ningún dato, aquí le dejo mi solución. Muchas gracias por los ejercicios me están sirviendo, eso que son un poco antiguos estos vídeos jejejej Un saludo :D
    /*20. Obtener el nombre y el departamento de los empleados con cargo 'Secretaria' o 'Vendedor',
    que no trabajan en el departamento de “PRODUCCION”, cuyo salario es superior a $1.000.000,
    ordenados por fecha de incorporación.*/
    SELECT e.nomEmp, d.nombreDpto, e.cargoE, e.salEmp, e.fecIncorporacion
    from empleados e, departamentos d
    where e.codDepto=d.codDepto and lower(e.cargoE) in ('secretaria','vendedor')
    and lower(d.nombreDpto) not in ('producción')
    and e.salEmp > '1000000'
    order by fecIncorporacion;

    • @DiscoDurodeRoer
      @DiscoDurodeRoer  Před 5 lety +8

      Tienes razón, pero me da sin datos porque puse el and en lo de vendedor y secretaria, cuando deberia poner un (lower(e.cargoE)=''secretaria' or lower(e.cargoE)='vendedor'). Te fijo el comentario

    • @christianalexisrodriguezru1529
      @christianalexisrodriguezru1529 Před 4 lety +1

      select nomEmp, codDepto, fecIncorporacion from empleados where cargoE in('Vendedor','Secretaria') and codDepto 1500 and salEmp > 1000000 order by fecIncorporacion; ASI LO HICE YO.

    • @bearbear9832
      @bearbear9832 Před 2 lety

      Exacto. Yo lo probé y tampoco

  • @abderrahimouchkouk8795
    @abderrahimouchkouk8795 Před 7 měsíci +2

    2024 y sigo aprendiendo de estos videos, gracias

  • @MattLeonel
    @MattLeonel Před 5 lety +13

    en el ejercicio 22 dice "al menos" no "menos". Lo que significa que seria >= porque te estaría dando un mínimo de caracteres

  • @sergiods2333
    @sergiods2333 Před 3 lety +3

    Explicación muchísimo mejor que en la FP. Bravo!

  • @ferxl88
    @ferxl88 Před 4 lety +4

    En el ejercicio 21 también funciona la siguiente sentencia: SELECT nomEmp FROM EMPLEADOS WHERE nomEmp LIKE ("___________") . Saludos y gracias por los ejercicios.

  • @tvreview4368
    @tvreview4368 Před 4 lety +4

    select * from empleados e , departamentos d where e.codDepto=d.codDepto and lower(nomEmp) like ('m%')
    and (salEmp > 800000 or comisionE > 0) and lower(d.nombreDpto)='ventas';

  • @franciscoserrano7385
    @franciscoserrano7385 Před 4 měsíci +1

    tengo una duda. Si tengo varias consultas guardadas (01_filtrar,02_crear,03_actualizar,04_crear_tabla_1,05_crear_tabla_2 y asi, etc.
    Como puedo ejecutar de forma secuencial la tabla en Mysql cuando tenga las bases nuevas? pregunto, por que es un proceso que se debe correr a diario y con nuevos datos, pero con la misma estructura. O tendré que enlazar con algún ETL o similar?
    Gracias de antemano.

  • @josefranciscodelapuente2621

    Están de luuuuuuujoooooooooo

  • @trenddingapp
    @trenddingapp Před 2 lety +1

    Saludos. Excelentes videos tutoriales. Soy un principiante del lenguaje SQL. y necedito ayuda, para crear una tabla. Tengo 3 tablas y cada tabla tiene 8 columnas, de las cuales quiero tomar los datos de solo 6 columnas, y esas luego sumarlos y que me genere una nueva tabla con el resultado de esa union o suma. Los datos son numericos, osea se puede sumar. Y que cumpla la condicion de sumarse, solo si la Columna 7 tenga el mismo valor en las 3 tablas.

  • @MattLeonel
    @MattLeonel Před 5 lety +6

    en el ejercicio 23 es = 'ventas', y lo pusiste distinto

  • @oseaflor
    @oseaflor Před 2 lety +2

    hola! esto se podria resolver con las funciones join?

  • @dantehijodeesparda9064
    @dantehijodeesparda9064 Před 5 lety +5

    se le sale un fantasma en el minuto 7:34

  • @dianalucialeonfigueroa1748

    En la intersección de los datos seria correcto utilizar un INNER JOIN para ciflar?

    • @dianalucialeonfigueroa1748
      @dianalucialeonfigueroa1748 Před 4 lety

      osea lo pondria en el from
      SELECT e.nombreEmp, d.nombreDpto
      from empleados e INNER JOIN on departamentos d e.codDepto=d.codDepto
      WHERE (e.cargoE='secretaria') OR (e.cargoE='vendedor') NOT (d.nombreDpto='producción') AND (e.salEmp > '1000000') ORDER BY e.fecIncorporacion

    • @santiagofacundo3892
      @santiagofacundo3892 Před 4 lety +2

      buenas, despues de un buen rato entendi que el problema del primer ejercicio es que le estamos diciendo a la base de datos que tiene dos cargos (vendedor y secretaria) y como ningun empleado tiene esa condición no trae nada, de todas maneras buscandole la vuelta aprendi a hacerlo igual que vos, me quedo asi:
      select e.nomemp as 'Nombre', d.nombreDpto as 'Departamento'
      from empleados e
      inner join departamentos d
      on e.codDepto=d.codDepto
      where lower(cargoE)='vendedor' or lower(cargoE)='secretaria'
      and lower(d.nombreDpto)'producción'
      and salEmp>1000000
      order by e.fecIncorporacion
      saludos.

  • @carlosrocha7251
    @carlosrocha7251 Před 2 lety +1

    Un fantasma detrás en el minuto 19:17

  • @javipelvira
    @javipelvira Před 2 lety +1

    En el ejercicio 20 pone secretaria o vendedor. Si pones AND, no tendría que cumplir las dos cosas? Lo cual creo que es imposible

    • @DiscoDurodeRoer
      @DiscoDurodeRoer  Před 2 lety +2

      Tienes razón es un or

    • @bearbear9832
      @bearbear9832 Před 2 lety

      Exacto. Yo lo probé con un OR , q sería lo mas logico. Pero tampoco me sale. Al final me decidí por la opcion que dieron mas arriba

  • @alexiki
    @alexiki Před rokem +1

    El 4o tambien está mal. Dice que sí trabajan para ventas y pones que no trabajan para ventas

    • @dilanesnehidermartinezsilv998
      @dilanesnehidermartinezsilv998 Před rokem

      select * from empleados e join departamentos d
      on d.codDepto = e.codDepto
      where (upper(e.nomEmp) like ("M%")) and (e.salEmp > 800000) or (e.comisionE > 0) and
      (upper(d.nombreDpto) like ("VENTAS"));

  • @TheDanielus
    @TheDanielus Před rokem +2

    consulta nº20: (desde XAMP>mysql)
    SELECT e.nomEmp, d.nombreDpto, e.cargoE, e.salEmp, e.fecIncorporacion
    from empleados e, departamentos d
    WHERE e.codDepto=d.codDepto AND e.cargoE='Vendedor' OR e.cargoE='Secretaria' AND d.nombreDpto NOT IN ('PRODUCCIÓN')
    ORDER BY e.fecIncorporacion;

    • @TheDanielus
      @TheDanielus Před rokem

      SELECT e.nomEmp, d.nombreDpto, e.cargoE, e.salEmp, e.fecIncorporacion from empleados e, departamentos d WHERE e.codDepto=d.codDepto AND e.cargoE='Vendedor' OR e.cargoE='Secretaria' AND d.nombreDpto NOT IN ('PRODUCCIÓN') AND e.salEmp > 1000000 ORDER BY e.fecIncorporacion; (falto añadir el salario superior a un millon)

    • @manolomezarodriguez6725
      @manolomezarodriguez6725 Před měsícem

      gracias

  • @reverss8372
    @reverss8372 Před rokem

    soy nuevo con esto y no pude entender muy bien lo de enlazar las tablas con un mismo campo

    • @DiscoDurodeRoer
      @DiscoDurodeRoer  Před rokem

      Piensa que estas "uniendo" dos tablas, pero para ello tienen que tener algo en común, que en este caso es el campo

    • @santiagomartinez7707
      @santiagomartinez7707 Před měsícem

      Para eso s eusan las llaves foranes para llamar columnas de tablas diferentes pero lo unico que las enlaza es esa llave foranea

  • @alexiki
    @alexiki Před rokem

    First query is wrong

    • @alexiki
      @alexiki Před rokem

      This is correct one:
      select e.nomemp, d.nombreDpto
      from empleados e, departamentos d
      where e.codDepto=d.codDepto and (lower(e.cargoE)='secretaria' OR lower(e.cargoE)='vendedor')
      and e.salEmp > 1000000 AND lower(d.nombreDpto)'producción'
      order by e.fecIncorporacion

  • @ashlyespiritu6364
    @ashlyespiritu6364 Před rokem

    Ayuda como me puedes ayudar

  • @yeissoncamilovillamilbland558

    donde puedo descargar tu base de datos que utilizas para los ejercicios, muchas gracias

  • @santiagomartinez7707
    @santiagomartinez7707 Před měsícem

    SELECT * FROM empleados
    WHERE nomEmp LIKE '___________';
    OTRA FORMA DEL PUNTO 21, usando LIKE también puede pedírsele que busque una letra entre 5 caracteres ejemplo (LIKE '---u--')

  • @dilanesnehidermartinezsilv998

    20. Obtener el nombre y el departamento de los empleados con cargo 'Secretaria' o 'Vendedor', que
    no trabajan en el departamento de “PRODUCCION”, cuyo salario es superior a $1.000.000,
    ordenados por fecha de incorporación.*/
    select e.cargoE as Cargo, e.nomEmp as Empleado, d.nombreDpto as Departamento, e.salEmp as Salario, e.fecIncorporacion as Ingreso
    from empleados e join departamentos d
    on d.codDepto = e.codDepto
    where d.codDepto = e.codDepto and (lower(e.cargoE) = "secretaria" or lower(e.cargoE) = "vendedor") and ((lower(d.codDepto) not like ('15%'))) and (e.salEmp > "1000000")
    order by e.fecIncorporacion;