CursosEmpresasBlogLiveConfPrecios

Todas las uniones

Clase 20 de 29 • Curso Práctico de SQL

Clase anteriorSiguiente clase

Contenido del curso

Introducción a SQL

  • 1
    Breve historia de SQL

    Breve historia de SQL

    06:03 min
  • 2
    Álgebra relacional

    Álgebra relacional

    07:05 min
  • 3

    Instalación de la BD de ejemplo

    01:28 min
  • 4
    Qué es una proyección (SELECT)

    Qué es una proyección (SELECT)

    06:14 min
  • 5
    Origen (FROM)

    Origen (FROM)

    08:41 min
  • 6
    Productos cartesianos (JOIN)

    Productos cartesianos (JOIN)

    10:36 min
  • 7
    Selección (WHERE)

    Selección (WHERE)

    11:50 min
  • 8
    Ordenamiento (ORDER BY)

    Ordenamiento (ORDER BY)

    07:57 min
  • 9
    Agregación y limitantes (GROUP BY y LIMIT)

    Agregación y limitantes (GROUP BY y LIMIT)

    09:09 min

Ejercitando tu SQL

  • 10
    El primero

    El primero

    11:05 min
  • 11
    El segundo más alto

    El segundo más alto

    16:25 min
  • 12
    Seleccionar de un set de opciones

    Seleccionar de un set de opciones

    11:16 min
  • 13
    En mis tiempos

    En mis tiempos

    09:50 min
  • 14
    Seleccionar por año

    Seleccionar por año

    08:13 min
  • 15
    Duplicados

    Duplicados

    13:09 min
  • 16
    Selectores de rango

    Selectores de rango

    10:16 min
  • 17
    Eres lo máximo

    Eres lo máximo

    07:55 min
  • 18
    Egoísta (selfish)

    Egoísta (selfish)

    09:47 min
  • 19
    Resolviendo diferencias

    Resolviendo diferencias

    10:49 min
  • 20
    Todas las uniones

    Todas las uniones

    Viendo ahora
  • 21
    Triangulando

    Triangulando

    10:34 min
  • 22
    Generando rangos

    Generando rangos

    14:27 min
  • 23
    Regularizando expresiones

    Regularizando expresiones

    11:00 min

Conceptos de SQL Avanzado

  • 24
    Bases de datos distribuidas

    Bases de datos distribuidas

    11:59 min
  • 25
    Queries distribuídos

    Queries distribuídos

    11:24 min
  • 26
    Sharding

    Sharding

    09:42 min
  • 27
    Window functions

    Window functions

    13:14 min
  • 28
    Particiones y agregación

    Particiones y agregación

    14:36 min
  • 29
    El futuro de SQL

    El futuro de SQL

    06:13 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        Anthony Guzman Lopez

        Anthony Guzman Lopez

        student•
        hace 5 años

        bueno, en esta imagen se aprecia la separacion de los join con su respectivo codigo basico

        ![](

        joins-sql-001.png

          Narzoly Estella Romero Reyes

          Narzoly Estella Romero Reyes

          student•
          hace 4 años

          Excelente imagen! muy buen resumen.

          Julián Cárdenas

          Julián Cárdenas

          student•
          hace 2 años

          Buen ejemplo grafico!

        Cesar Augusto Morales Godoy

        Cesar Augusto Morales Godoy

        student•
        hace 4 años

        Test técnico de una empresa

        Hace una semana tuve un test de SQL para una empresa donde me presentaban 3 tablas parecidas a las descritas en clase, y me pedían que hiciera una query (que si traducimos a los datos de este schema DB) trayendo una lista de los alumnos (customers) con su respectivo tutor_id (company) de la carrera (location) que tuviera más alumnos (customers). DE acuerdo a este test que por cierto no pude resolver en el tiempo indicado hago un query para esta DB equivalente, espero les ayude en algo, a entender un poco también como es el ambiente laboral con SQL.

        SELECT CONCAT(a.nombre, ' ', a.apellido), a.tutor_id FROM platzi.alumnos AS a JOIN platzi.carreras AS c ON c.id = a.carrera_id WHERE c.id = ( SELECT c.id FROM platzi.carreras AS c INNER JOIN platzi.alumnos AS a ON a.carrera_id = c.id GROUP BY c.id ORDER BY COUNT(*) DESC LIMIT 1);

        La verdad era sencilla la prueba pero bueno faltaba un poquito más de práctica...

          Melanie Daniela Ventura Jimenez

          Melanie Daniela Ventura Jimenez

          student•
          hace 4 años

          Gracias por compartirnos tu experiencia.

          carlos quintero

          carlos quintero

          student•
          hace 4 años
          SELECT maxCarrera.`carrera` ,concat(ifnull(a.nombre,''),' ',ifnull(a.apellido,'')) as estudiante ,concat(ifnull(t.nombre,''),' ',ifnull(t.apellido,'')) as tutor FROM alumnos a INNER JOIN alumnos t on (t.id = a.tutor_id) INNER JOIN (SELECT ca.id, ca.carrera, count(a.carrera_id) cant_alumnos FROM carreras ca INNER JOIN alumnos a on (a.carrera_id=ca.id) GROUP BY ca.id ORDER BY cant_alumnos DESC LIMIT 1 ) as maxCarrera on maxCarrera.id = a.carrera_id;
        Heberto Nicolás Hernández Andrade

        Heberto Nicolás Hernández Andrade

        student•
        hace 4 años

        En la siguiente imagen comparto los ejercicios hechos en clase con su respectivo diagrama de venn:

        SharedScreenshot.jpg

          Andrés Vega

          Andrés Vega

          student•
          hace 3 años

          Gracias por esto.

          Carlos Castillo Hernández

          Carlos Castillo Hernández

          student•
          hace un año

          ¡GRAN APORTACIÓN! Muchas gracias

        Aaron Fabrizio Calderon Guillermo

        Aaron Fabrizio Calderon Guillermo

        student•
        hace 5 años

        Me parece que hay un error al momento de usar WHERE en los JOIN. Se debería manejar con las KEYS, en este caso sería:

        WHERE a.carrera_id IS NULL OR c.id IS NULL
          Joel Sierra Mendoza

          Joel Sierra Mendoza

          student•
          hace 4 años

          Pienso lo mismo

          Oscar Fernando Peñafiel Acosta

          Oscar Fernando Peñafiel Acosta

          student•
          hace 3 años

          Pienso igual

        JAVIER SANTIAGO SALGADO

        JAVIER SANTIAGO SALGADO

        student•
        hace 5 años
        -- LEFT JOIN EXCLUSIVO SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a LEFT JOIN platzi.carreras AS c ON a.carrera_id = c.id WHERE c.id IS NULL; -- LEFT JOIN SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a LEFT JOIN platzi.carreras AS c ON a.carrera_id = c.id ORDER BY c.id DESC; -- RIGHT JOIN SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a RIGHT JOIN platzi.carreras AS c ON a.carrera_id = c.id ORDER BY c.id DESC; -- RIGHT JOIN EXCLUSIVE SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a RIGHT JOIN platzi.carreras AS c ON a.carrera_id = c.id WHERE a.id IS NULL ORDER BY c.id DESC; -- INNER JOIN SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a INNER JOIN platzi.carreras AS c ON a.carrera_id = c.id ORDER BY c.id DESC; SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a JOIN platzi.carreras AS c ON a.carrera_id = c.id ORDER BY c.id; -- FULL OUTER SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a FULL OUTER JOIN platzi.carreras AS c ON a.carrera_id = c.id ORDER BY c.id; -- EXCLUSIVE FULL OUTER JOIN SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a FULL OUTER JOIN platzi.carreras AS c ON a.carrera_id = c.id WHERE a.id IS NULL OR c.id IS NULL ORDER BY a.carrera_id DESC,c.id DESC;
        LIZBET ESTEFANY CASANA VERASTEGUI

        LIZBET ESTEFANY CASANA VERASTEGUI

        student•
        hace 5 años

        full outer join es igual que full join?

          Patricio Villarroel Durán

          Patricio Villarroel Durán

          student•
          hace 5 años

          Hola Liz

          Si, es lo mismo. Pasa también con LEFT OUTER JOIN, que puedes indicarlo solo como LEFT JOIN y, por cierto, RIGHT OUTER JOIN como RIGHT JOIN. O INNER JOIN puedes indicarlo solo como JOIN.

          La diferencia es solo un asunto de revisión del lenguaje, cosa que ha ocurrido varias veces.

        Michael Gamba

        Michael Gamba

        student•
        hace 3 años

        Dejop un aporte

        Screenshot 2023-04-10 204409.png
        Mariano Gobea Alcoba

        Mariano Gobea Alcoba

        student•
        hace 4 años

        Desafío:

        -- Left join exclusivo: Traigo todos los alumnos que no tienen info de carrera SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a LEFT JOIN platzi.carreras AS c ON a.carrera_id = c.id WHERE c.id IS NULL; -- Left join: Traigo todos los alumnos, sin importar si tienen o no carreras SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a LEFT JOIN platzi.carreras AS c ON a.carrera_id = c.id ORDER BY c.id DESC; -- Right join: Traigo todas las carreras sin importar si tienen o no alumnos -- No veremos los alumnos que se inscribieron entre la 30 y 40 que no existen SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a RIGHT JOIN platzi.carreras AS c ON a.carrera_id = c.id ORDER BY c.id DESC; -- Right join exclusive: Solo las carreras que no tienen alumnos SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a RIGHT JOIN platzi.carreras AS c ON a.carrera_id = c.id WHERE a.id IS NULL ORDER BY c.id DESC; -- Join solo o Inner join: Aquello que tienen en comun ambas tablas SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a INNER JOIN platzi.carreras AS c ON a.carrera_id = c.id ORDER BY c.id DESC; -- Join mas usado. -- Ó SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a JOIN platzi.carreras AS c ON a.carrera_id = c.id ORDER BY c.id DESC; -- Join mas usado. -- Diferencia simétrica: Contrario al inner join: -- Está en cada tabla pero no en la otra SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a FULL OUTER JOIN platzi.carreras AS c ON a.carrera_id = c.id WHERE a.id IS NULL OR c.id IS NULL ORDER BY a.carrera_id DESC, c.id DESC;
          Estiven Rojas

          Estiven Rojas

          student•
          hace 4 años

          super buen aporte !!!

        Michael Gamba

        Michael Gamba

        student•
        hace 3 años

        Dejo un aporte extra con las principales diferencias de los joins.

        Screenshot 2023-04-11 105502.png

        lo dejo en formato markdown por si alguien lo necesita

        Tipo de JOINDescripción
        INNER JOINDevuelve filas cuando hay una coincidencia en ambas tablas
        LEFT JOINDevuelve todas las filas de la tabla izquierda, incluso si no hay coincidencias en la tabla derecha
        RIGHT JOINDevuelve todas las filas de la tabla derecha, incluso si no hay coincidencias en la tabla izquierda
        FULL OUTER JOINCombina los resultados de los LEFT y RIGHT OUTER JOIN. La tabla unida contendrá todos los registros de ambas tablas y rellenará con NULLs las coincidencias faltantes en cualquier lado
        CROSS JOINProduce un producto cartesiano entre las dos tablas, devolviendo todas las combinaciones posibles de todas las filas. No tiene cláusula ON porque simplemente está uniendo todo con todo
        NATURAL JOINUne dos tablas basándose en columnas con el mismo nombre y tipo de datos en ambas tablas
        SELF JOINUne una tabla consigo misma como si la tabla fuera dos tablas, renombrando temporalmente al menos una tabla en la declaración SQL
        Pablo Alejandro Figueroa

        Pablo Alejandro Figueroa

        student•
        hace 2 años
        Captura de pantalla 2023-09-15 180849.png
        David Aguilera

        David Aguilera

        student•
        hace 3 años

        Comparto tutorial de este Crack

        • SQL desde Cero
          Andrey Ruiz

          Andrey Ruiz

          student•
          hace 3 años

          Super bueno!! Muchas gracias :D

        Daniel Eduardo Montero Ramírez

        Daniel Eduardo Montero Ramírez

        student•
        hace 4 años

        Por qué aunque no existe el campo

        a.id

        aún así le carga bien cuando corre la sentencia:

        SELECT a.nombre, a.apellido, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a FULL OUTER JOIN platzi.carreras AS c ON a.carrera_id = c.id WHERE a.id IS NULL OR c.id IS NULL ORDER BY c.id DESC
          Cristopher Rojas Salas

          Cristopher Rojas Salas

          student•
          hace 4 años

          Hola Daniel, el campo a id sí existe en la tabla platzi alumnos.

          platzi_alumnos.jpg
        Ronny Jair Mora Rojas

        Ronny Jair Mora Rojas

        student•
        hace 3 años

        En la parte del ON ¿Siempre se realiza mediante los id?

        ON a.carrera_id = c.id

        Además ¿Por qué el igual? Gracias de antemano.

          Carlos S. Aldazosa

          Carlos S. Aldazosa

          student•
          hace 3 años

          En el ON se hace la "union" de las llaves foraneas y llaves primarias, es comun que estas llaves sean los id's, pero pueden ser cosas como un nombre de usario, email, numero de telefono, etc.

        Ruth Codina

        Ruth Codina

        student•
        hace 5 años

        a mi no me aparece los null, ya de plano no aparecern

        Diego Andrés González Pérez

        Diego Andrés González Pérez

        student•
        hace 3 años

        Reto: Obtener el listado de los alumnos de la carrera que tenga más alumnos

        SELECT CONCAT(nombre, ' ',apellido) AS nombre, tutor_id FROM platzi.alumnos WHERE carrera_id = ( --Carrera con mas alumnos SELECT carrera_id FROM platzi.alumnos GROUP BY carrera_id ORDER BY COUNT(*) DESC LIMIT 1 )
        Paola Juliet Orozco Molina

        Paola Juliet Orozco Molina

        student•
        hace 3 años

        El estándar SQL especifica cinco tipos de JOIN : INNER , LEFT OUTER , RIGHT OUTER , FULL OUTER y CROSS . Una tabla puede unirse a sí misma, produciendo una auto-combinación, SELF-JOIN.

        agustin pittavino

        agustin pittavino

        student•
        hace 3 años

        Agrego una concatenación del nombre y apellido del alumno para facilitar su lectura, y excluyo alumnos que no estén estudiando ninguna carrera, para su futuro análisis o limpieza de base de datos de ex-alumnos.

        SELECT CONCAT (a.nombre, ' ' , a.apellido) AS alumno, a.email, a.carrera_id, c.id, c.carrera FROM platzi.alumnos AS a INNER JOIN platzi.carreras AS c ON a.carrera_id = c.id WHERE a.carrera_id IS NOT NULL ORDER BY carrera_id DESC;
          oscar.rusinque

          oscar.rusinque

          student•
          hace 3 años

          Hola Agustin, gracias por tu aporte. Creo si no estoy mal, sobra la cláusula where ya que al hacer inner join y filtrando por id= carrera_id descartas los ids y carreras ids que estén en null y al ser id un PK no deberia estar en null

        Nicolás Kryvenki

        Nicolás Kryvenki

        student•
        hace 4 años

        Algunas prácticas, no es mucho pero es trabajo honesto :D

        SELECT a.nombre, a.apellido, c.carrera FROM platzi.alumnos AS a INNER JOIN platzi.carreras AS c ON a.id = c.id WHERE c.carrera = 'Química'; --Nos dara la lista de alumnos que están en Quimica. SELECT c.carrera, c.id, a.nombre, a.apellido, a.carrera_id FROM platzi.carreras AS c FULL OUTER JOIN platzi.alumnos AS a ON c.id = a.carrera_id WHERE c.vigente = false ORDER BY c.id ASC; --Todos los alumnos con carreras NO VIGENTES, ordenado por el id de carrera.
        Diego Gomez

        Diego Gomez

        student•
        hace 4 años
        --Alumnos que no tienen carrera asociada select * from platzi.alumnos pa left join platzi.carreras pc on pa.carrera_id=pc.id and pc.id is null --Carreras que no tienen ningun alumno asociado select * from platzi.alumnos pa right join platzi.carreras pc on pa.carrera_id=pc.id and pa.id is null --Todas las carreras con alumnos asociados select * from platzi.alumnos pa inner join platzi.carreras pc on pa.carrera_id=pc.id --Todas los alumnos y solo las carreras que tienen un alumno asocioado select * from platzi.alumnos pa left join platzi.carreras pc on pa.carrera_id=pc.id --Todas las carreras y solo los alumnos que tienen una carrera asocioada select * from platzi.alumnos pa right join platzi.carreras pc on pa.carrera_id=pc.id --Trae todo select * from platzi.alumnos pa full outer join platzi.carreras pc on pa.carrera_id=pc.id --Trae todo lo de las 2 tablas menos lo que coincida. select * from platzi.alumnos pa full outer join platzi.carreras pc on pa.carrera_id=pc.id where pa.carrera_id is null or pc.id is null
        Carmen Sánchez Salgado

        Carmen Sánchez Salgado

        student•
        hace 5 años
        full_join.png