Bienvenida conceptos básicos y contexto histórico de las Bases de Datos

1

Bienvenida conceptos básicos y contexto histórico de las Bases de Datos

2

Playground: tu primera consulta en bases de datos

Introducción a las bases de datos relacionales

3

Historia de las bases de datos relacionales

4

Qué son entidades y atributos

5

Entidades de Platzi Blog

6

Relaciones

7

Múltiples muchos

8

Diagrama ER

9

Diagrama Físico: tipos de datos y constraints

10

Diagrama Físico: normalización

11

Formas normales en Bases de Datos relacionales

12

Diagrama Físico: normalizando Platziblog

RDBMS (MySQL) o cómo hacer lo anterior de manera práctica

13

¿Qué es RDB y RDBMS?

14

Instalación local de un RDBMS (Windows)

15

Instalación local de un RDBMS (Mac)

16

Instalación local de un RDBMS (Ubuntu)

17

Clientes gráficos

18

Servicios administrados

SQL hasta en la sopa

19

Historia de SQL

20

DDL create

21

Playground: CREATE TABLE

22

CREATE VIEW y DDL ALTER

23

DDL drop

24

Playground: VIEW, ALTER y DROP en SQL

25

DML

26

Playground: CRUD con SQL

27

¿Qué tan standard es SQL?

28

Creando Platziblog: tablas independientes

29

Creando Platziblog: tablas dependientes

30

Creando Platziblog: tablas transitivas

Consultas a una base de datos

31

¿Por qué las consultas son tan importantes?

32

Estructura básica de un Query

33

SELECT

34

Playground: SELECT en SQL

35

FROM y SQL JOINs

36

Utilizando la sentencia FROM

37

Playground: FROM y LEFT JOIN en SQL

38

WHERE

39

Utilizando la sentencia WHERE nulo y no nulo

40

Playground: Filtrando Datos con WHERE

41

GROUP BY

42

ORDER BY y HAVING

43

Playground: Agrupamiento y Ordenamiento de Datos

44

El interminable agujero de conejo (Nested queries)

45

¿Cómo convertir una pregunta en un query SQL?

46

Preguntándole a la base de datos

47

Consultando PlatziBlog

48

Playground: Prueba Final con PlatziBlog

Introducción a la bases de datos NO relacionales

49

¿Qué son y cuáles son los tipos de bases de datos no relacionales?

50

Servicios administrados y jerarquía de datos

Manejo de modelos de datos en bases de datos no relacionales

51

Top level collection con Firebase

52

Creando y borrando documentos en Firestore

53

Colecciones vs subcolecciones

54

Recreando Platziblog

55

Construyendo Platziblog en Firestore

56

Proyecto final: transformando tu proyecto en una db no relacional

Bases de datos en la vida real

57

Bases de datos en la vida real

58

Big Data

59

Data warehouse

60

Data mining

61

ETL

62

Business intelligence

63

Machine Learning

64

Data Science

65

¿Por qué aprender bases de datos hoy?

Bonus

66

Bases de datos relacionales vs no relacionales

67

Elegir una base de datos

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Playground: Prueba Final con PlatziBlog

48/67

Aportes 130

Preguntas 10

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

GOD FIRST

Me voy a sincerar jajaja, sé que faltan aún más clases pero la verdad en horabuena a todos nosotros por llegar hasta acá, interesante las bases de datos pero DAMMMN nunca había tomado un curso online tan largo, tan tecnico, tan poco interactivo pero a la vez tan bien explicado o sea la verdad mis felicitaciones al profesor, soy un frontend dev y estaba acá con muchas dudas pero ahora me siento confidente en SQL, sí largo y un poco pues de pereza como perez oso jajaja. Pero definitivamente muy necesario, gracias por este curso y felicitaciones por llegar hasta acá porque woah eso sí es atención sostenida y hoy en día en la generación tiktok es un gran logro. Andrew Carnegie decía que la clave para él hacer su imperio viniendo de la miseria absoluta era que podía mantener su atención en una única cosa por 5 minutos sin distraerse

Solución… 😄
.
Tiene bugs este reto 😅.
.
NOTA:

  • Reto 2: En la descripción del reto se pide agregar 2 tuplas pertenezcan al “usuario_id” 43, pero este no existe en la tabla “usuarios”.
    .
  • Reto 2: Para que las pruebas pasen bien se tiene que poner el número 43 en el lugar del “post_id” y además el “user_id” de estas 2 tuplas debe ser 1.
    .
    Ejemplo:
(2,"Comentario 2", 1, 43),
(3,"Comentario 3", 1, 43);

.

  • Reto 4: Debido lo anterior es indiferente filtrar por el “comentarios.usuario_id = 1” o el “comentarios.post_id = 43”, aunque lo ideal sería “comentarios.usuario_id = 43”.
    .

El reto es muy interesante y esperamos se puedan solucionar los bugs 😄.
.

.

-- Reto 1
CREATE TABLE IF NOT EXISTS comentarios (
  id INTEGER PRiMARY KEY NOT NULL,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INTEGER NOT NULL,
  post_id INTEGER NOT NULL,
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
  FOREIGN KEY (post_id) REFERENCES posts(id)
);

-- Reto 2
INSERT INTO comentarios (
  id, cuerpo_comentario, usuario_id, post_id
) 
VALUES
(1,"Comentario 1", 2, 54),
(2,"Comentario 2", 1, 43),
(3,"Comentario 3", 1, 43);

-- Reto 3
SELECT * FROM comentarios;

-- Reto 4
SELECT comentarios.cuerpo_comentario AS comentario,
usuarios.login AS usuario, posts.titulo AS post
FROM comentarios
INNER JOIN posts ON 
posts.id = comentarios.post_id
INNER JOIN usuarios ON 
usuarios.id = comentarios.usuario_id
WHERE comentarios.usuario_id = 1;

Media hora sin entender por qué me tiraba error la consulta, resulta que había escrito “FOREING” en vez de “FOREIGN”,
solución:

-- Tu código aquí 👇
-- 1
CREATE TABLE IF NOT EXISTS comentarios (
  id INTEGER PRIMARY KEY NOT NULL,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INTEGER NOT NULL,
  post_id INTEGER NOT NULL,
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
  FOREIGN KEY (post_id) REFERENCES posts(id)
);

-- 2
INSERT INTO comentarios (id,cuerpo_comentario,usuario_id,post_id) 
VALUES 
(1, "un día seremos leyenda",2,54),
(2, "Las máquinas podrán hacer lo que sea que haga la gente, porque las personas son solo máquinas.",1,43),
(3, "Me gustan las papitas fritas",1,43);

-- 3
SELECT * FROM comentarios;

-- 4
SELECT comentarios.cuerpo_comentario AS comentario, 
usuarios.login AS usuario, posts.titulo AS post
FROM comentarios
INNER JOIN posts ON 
posts.id = comentarios.post_id
INNER JOIN usuarios ON 
usuarios.id = comentarios.usuario_id
WHERE comentarios.usuario_id = 1;

Estos retos no son para principiantes… Debes tener cierto nivel para poder resolverlos y es mi primer acercamiento a bases de datos.

Ejercicio prueba final:

Este fue en mi opinion personal el reto que mas costo.

A alguien le pasa que en la consola imprime todo como pide y al momento de correr pruebas da errores?
![](https://static.platzi.com/media/user_upload/image-6e151476-eab1-4ff4-997e-a84b7c657eed.jpg)
```js -- 1 CREATE TABLE IF NOT EXISTS comentarios ( id INTEGER PRIMARY KEY NOT NULL, cuerpo_comentario TEXT NOT NULL, usuario_id INTEGER NOT NULL, post_id INTEGER NOT NULL, FOREIGN KEY (usuario_id) REFERENCES usuarios (id), FOREIGN KEY (post_id) REFERENCES posts(id) ); -- 2 INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (1, "River Plate es el mas grande", 2, 54), (2, "Su cancha y sus tribunas siempre repletas.", 1, 43), (3, "Marcelo Gallardo su mejor DT", 1, 43); -- 3 SELECT * FROM comentarios; -- 4 SELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post FROM comentarios INNER JOIN usuarios ON comentarios.usuario_id = usuarios.id INNER JOIN posts ON comentarios.post_id = posts.id WHERE comentarios.usuario_id = 1; ```

Estas son las respuestas

CREATE TABLE comentarios (
  id int(11) NOT NULL,
  cuerpo_comentario text NOT NULL,
  usuario_id int(11) NOT NULL,
  post_id int(11) NOT NULL,
  PRIMARY KEY (id),
  CONSTRAINT comentarios_post FOREIGN KEY (post_id) REFERENCES posts (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT comentarios_usuario FOREIGN KEY (usuario_id) REFERENCES usuarios (id) ON DELETE NO ACTION ON UPDATE NO ACTION
);

INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
VALUES (1000, "Me gustó mucho este post", 1, 43),
(1001, "Por favor hagan más", 1, 43),
(1002, "Nah, no habrá autos así en mucho tiempo", 2, 63);

SELECT * FROM comentarios;

SELECT
  posts.titulo AS post,
  usuarios.login AS usuario,
  comentarios.cuerpo_comentario AS comentario
FROM comentarios
INNER JOIN usuarios ON comentarios.usuario_id = usuarios.id
INNER JOIN posts ON comentarios.post_id = posts.id
WHERE comentarios.usuario_id = 1;

Este reto requería algo de malicia, evalúa muy bien lo visto hasta el momento.

Si bien considero que estos ejercicios son muy buenos para practicar, siento que el sistema para evaluar y ejecutar las pruebas en ocasiones se queda muy corto.
Muchas veces las pruebas indican que hay un error pero no avisan sobre el tipo, uno puede creer que es su propia sintaxis cuando en realidad es que si las pruebas ven un query de más falla todo.
Sería oportuno cambiar que evalue las cosas así o al menos indicarlo. (:

Aquí hay un gran error, nos piden que insertemos comentarios del usuario 43, cuanto en la tabla de usuarios no hay un usuario 43. Los posts son los que inician en 43. En el reto 4 nos piden que imprimamos los comentarios que están relacionados al usuario 43 y al titulo. Obviamente al no haber un usuario tal, no podemos hacer esa relación.
Aquí mi solución:

-- Reto 1
CREATE TABLE comentarios (
    id INT PRIMARY KEY NOT NULL,
    cuerpo_comentario TEXT,
    usuario_id INT,
    post_id INT,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
    FOREIGN KEY (post_id) REFERENCES posts(id)
);

-- Reto 2
INSERT INTO comentarios(id, cuerpo_comentario, usuario_id, post_id)
VALUES (1,"Que gran indormacion, gracias por compartir",2,44),
(2,"He visto mejor infromacion en wikipedia jaja",1,43),
(3,"Que flojera leer este tipo de posts",1,43);

-- Reto 3
SELECT * FROM comentarios;

-- Reto 4
SELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post
FROM comentarios
LEFT JOIN usuarios ON comentarios.usuario_id = usuarios.id
LEFT JOIN posts ON comentarios.post_id = posts.id
WHERE usuarioS.id = 1;
Agrego mi solución para alguno que necesite ayuda. . . . . . . . . . * Reto 1: crear la tabla Crea una tabla `comentarios` con las columnas `id`, `cuerpo_comentario`, `usuario_id` y `post_id`. ```js CREATE TABLE comentarios ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, cuerpo_comentario VARCHAR(255) NOT NULL, usuario_id INTEGER NOT NULL, post_id INTEGER NOT NULL ); ```Reto 2: agrega registros Inserta al menos 3 comentarios en la tabla. Puedes escribir tantos comentarios como quieras. Asegúrate de que solo en 2 el `usuario_id` sea `1`. ```js INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (1, 'Este es el primer comentario.', 2, 44), (2, 'Segundo comentario del usuario especial.', 1, 43), (3, 'Comentario adicional del usuario especial.', 1, 48), (4, 'Nuevo comentario para pruebas.', 3, 45); ```Reto 3: imprime registros Imprime todas las columnas de todos los registros de la tabla `comentarios`. ```js SELECT * FROM comentarios; ```Reto 4: imprime registros del usuario `1` Selecciona los 2 comentarios del usuario `1`. Haz un `JOIN` para conseguir la información del post relacionado con la propiedad `post_id` y el usuario relacionado con la propiedad `usuario_id`. Imprime la propiedad `comentarios.cuerpo_comentario` como `comentario`, `usuarios.login` como `usuario` y `posts.titulo` como `post`. ```js SELECT c.cuerpo_comentario AS comentario, u.login AS usuario, p.titulo AS post FROM comentarios AS c JOIN usuarios AS u ON c.usuario_id = u.id JOIN posts AS p ON c.post_id = p.id WHERE c.usuario_id=1 ; ```
Chequen que los posts ids sean validos, porque el interprete no valida si las foreing keys son de registros existentes en las otras tablas, las primeras consultas que aparecen justamente son para que puedas verificar los datos y las estructuras de las otras tablas relacionadas. ```txt CREATE TABLE comentarios ( id INT AUTO_INCREMENT PRIMARY KEY, cuerpo_comentario TEXT NOT NULL, usuario_id INT NOT NULL, post_id INT NOT NULL, FOREIGN KEY(usuario_id) REFERENCES usuarios(id), FOREIGN KEY(post_id) REFERENCES posts(id) ); INSERT INTO comentarios(cuerpo_comentario, usuario_id, post_id) VALUES ('xxx del user 1 en post 1', 1, 43); INSERT INTO comentarios(cuerpo_comentario, usuario_id, post_id) VALUES ('xxx del user 1 en post 2', 1, 44); INSERT INTO comentarios(cuerpo_comentario, usuario_id, post_id) VALUES ('xxx del user 2 en post 1', 2, 50); SELECT * FROM comentarios ; SELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post FROM comentarios INNER JOIN usuarios ON usuarios.id = comentarios.usuario_id INNER JOIN posts ON posts.id = comentarios.post_id WHERE comentarios.usuario_id = 1 ; ```
SELECT \* FROM usuarios; SELECT \* FROM categorias; SELECT \* FROM etiquetas;SELECT \* FROM posts; SELECT \* FROM posts\_etiquetas; CREATE TABLE comentarios (  id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,  cuerpo\_comentario TEXT NOT NULL,  usuario\_id INTEGER NOT NULL,  post\_id INTEGER NOT NULL,  FOREIGN KEY (usuario\_id) REFERENCES usuarios(id)  FOREIGN KEY (post\_id) REFERENCES posts(id)); INSERT INTO comentarios (cuerpo\_comentario,usuario\_id,post\_id) values ("Te comento que muy bueno",1,43),("Te comento que muy bueno por dos",1,50),("Te comento que muy bueno por tres",2,51); SELECT \* from comentarios; SELECT c.cuerpo\_comentario as comentario,u.login as usuario,p.titulo as post FROM comentarios as c INNER JOIN usuarios as u ON u.id = c.usuario\_id INNER JOIN posts as p ON p.id = c.post\_id where c.usuario\_id = 1
Corrí las pruebas sin colocar las claves foráneas 'FOREIGN KEY' y funcionó. Esto lo hice intencionalmente para ver si me marcaba error. Les agradezco si me comentan la importancia de colocarlas FOREIGN KEY, ya que en este preciso momento no entiendo por qué funciona sin importar si las coloco o no.
Costó, pero salió a la primera...CREATE TABLE comentarios(  id INT PRIMARY KEY NOT NULL,  cuerpo\_comentario VARCHAR(200),  usuario\_id INT,  post\_id INT,   FOREIGN KEY (usuario\_id) REFERENCES usuarios(id)  FOREIGN KEY (post\_id) REFERENCES posts(id)); INSERT INTO comentarios VALUES (1, "Comentario 1", 1, 43);INSERT INTO comentarios VALUES (2, "Comentario 2", 1, 44);INSERT INTO comentarios VALUES (3, "Comentario 3", 3, 45);INSERT INTO comentarios VALUES (4, "Comentario 4", 4, 46);INSERT INTO comentarios VALUES (5, "Comentario 5", 2, 47); SELECT \* FROM comentarios; SELECT comentarios.cuerpo\_comentario AS comentario,       usuarios.login AS usuario,       posts.titulo AS postFROM comentarios INNER JOIN usuarios,postsON comentarios.usuario\_id = usuarios.id   AND comentarios.post\_id = posts.idWHERE usuarios.id = 1; ![](https://static.platzi.com/media/user_upload/image-b327d84a-68ca-4dea-8ba2-b00e0bc2df3e.jpg)
Esta fue mi solución, la verdad me costó un poco. Consejo borren los primeros 5 SELECT que eso me fastidio un rato. Solución: \-- crear tabla comentarios CREATE TABLE comentarios(  id INT AUTO\_INCREMENT PRIMARY KEY,  cuerpo\_comentario TEXT, usuario\_id INT,  post\_id INT,  FOREIGN KEY (usuario\_id) REFERENCES usuarios(id), FOREIGN KEY (post\_id) REFERENCES posts(id)); \-- Insertar datos en la tabla INSERT INTO comentarios (cuerpo\_comentario, usuario\_id, post\_id) VALUES ("Este es un comentario del usuario 1", 1, 44), ("Este es otro comentario del usuario 1", 1, 53); INSERT INTO comentarios (cuerpo\_comentario, usuario\_id, post\_id) VALUES ("Este es un comentario de usuario 2", 2, 47); \-- Imprimir registros SELECT \* FROM comentarios; \--Imprimir los registros del usuario 1 SELECT comentarios.cuerpo\_comentario AS comentario, usuarios.login AS usuario,posts.titulo AS post FROM comentarios INNER JOIN usuarios ON usuarios.id = comentarios.usuario\_id INNER JOIN posts ON posts.id = comentarios.post\_id WHERE usuarios.id = 1;
Luego de varios intentos di con la solucion: \-- Crear la tabla usuarios con AUTO\_INCREMENT DROP TABLE IF EXISTS usuarios;CREATE TABLE usuarios ( id INTEGER PRIMARY KEY AUTOINCREMENT, login VARCHAR(255) NOT NULL); \-- Crear la tabla posts con AUTO\_INCREMENT DROP TABLE IF EXISTS posts;CREATE TABLE posts ( id INTEGER PRIMARY KEY AUTOINCREMENT, titulo VARCHAR(255) NOT NULL); \-- Insertar datos en la tabla usuarios INSERT INTO usuarios (login) VALUES ('israel'), ('maria'); \-- Insertar datos en la tabla posts INSERT INTO posts (titulo) VALUES ('Post sobre SQL'), ('Post sobre PHP'), ('Post sobre Python'); \-- Crear la tabla comentarios DROP TABLE IF EXISTS comentarios;CREATE TABLE comentarios ( id INTEGER PRIMARY KEY AUTOINCREMENT, cuerpo\_comentario TEXT NOT NULL, usuario\_id INTEGER NOT NULL, post\_id INTEGER NOT NULL, FOREIGN KEY (usuario\_id) REFERENCES usuarios(id), FOREIGN KEY (post\_id) REFERENCES posts(id)); \-- Insertar datos en la tabla comentarios INSERT INTO comentarios (cuerpo\_comentario, usuario\_id, post\_id) VALUES('Este es el primer comentario del usuario 1', 1, 1),('Este es el segundo comentario del usuario 1', 1, 2),('Este es un comentario del usuario 2', 2, 3); \-- Seleccionar todos los registros de la tabla comentarios SELECT \* FROM comentarios; \-- Seleccionar comentarios del usuario\_id 1 con JOIN SELECT comentarios.cuerpo\_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS postFROM comentariosJOIN usuarios ON comentarios.usuario\_id = usuarios.idJOIN posts ON comentarios.post\_id = posts.idWHERE comentarios.usuario\_id = 1;
Aqui mi solucion CREATE TABLE comentarios ( id integer PRIMARY KEY NOT NULL, cuerpo\_comentario text, usuario\_id FOREING KEY, post\_id FOREING key ); insert into comentarios(id, cuerpo\_comentario, usuario\_id, post\_id)values(1, 'hola soy el primer comentario', 1, 43),(2, 'hola soy el segundo comentario', 3, 43),(3, 'hola soy el tercer comentario', 1, 43),(4, 'hola soy el cuarto comentario', 4, 43); SELECT \* from comentarios; SELECT comentarios.cuerpo\_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS postFROM comentariosJOIN posts ON comentarios.post\_id = posts.idJOIN usuarios ON comentarios.usuario\_id = usuarios.idWHERE comentarios.usuario\_id = 1;
Buenas Muy bueno el ejercicio Alguno conoce alguna pagina de ejercicios de este tipo para consultas a bases de datos? Saludos
Crea que que estaba entretenido más que difícil el reto :) 1.- No aprendí a hacer con código lo las claves foráneas, pero para la consulta no fue necesario al parecer. (Aunque ya vi como se hace en los comentarios) 2.- Quise usar chat-gpt para los comentarios y relacionarlos con usuarios al azar. ```txt -- Tu código aquí 👇 --SELECT * FROM usuarios; --SELECT * FROM categorias; --SELECT * FROM etiquetas; --SELECT * FROM posts; --SELECT * FROM posts_etiquetas; CREATE TABLE comentarios ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, cuerpo_comentario TEXT, usuario_id INTEGER NOT NULL, post_id INTEGER NOT NULL ); INSERT INTO comentarios (cuerpo_comentario, usuario_id, post_id) values ('¡Qué emoción! No puedo esperar a probar todas las nuevas funcionalidades del nuevo teléfono móvil.', 3, 43), ('¡Impresionante! Este auto inteligente parece sacado de una película de ciencia ficción.', 5, 44), ('Un merecido reconocimiento a un trabajo revolucionario en el campo de la genética.', 2, 45), ('Los diseños de moda en esta alfombra roja son absolutamente deslumbrantes.', 4, 46), ('¡Qué sorpresa! Este escándalo seguramente dará mucho de qué hablar.', 1, 47), ('El futuro de la conducción autónoma se ve cada vez más prometedor con estos avances.', 5, 48), ('Una gran oportunidad para quienes buscan invertir en bienes raíces.', 1, 52), ('¡Felicidades a la nueva campeona del mundial de voleibol! Un logro increíble.', 4, 62); SELECT * FROM comentarios; SELECT cuerpo_comentario AS comentario, login AS usuario, titulo AS post FROM posts INNER JOIN comentarios ON posts.id = comentarios.post_id INNER JOIN usuarios ON comentarios.usuario_id = usuarios.id WHERE usuarios.id = 1; ```![](https://static.platzi.com/media/user_upload/image-b58d667c-40c5-4165-83e6-59f72d30cede.jpg) ![](https://static.platzi.com/media/user_upload/image-51396e49-22fb-4a98-bf76-6a2718fdca63.jpg)
\--Reto 1CREATE TABLE IF NOT EXISTS comentarios (  id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,  cuerpo\_comentario TEXT NOT NULL,  usuario\_id INTEGER NOT NULL,  post\_id INTEGER NOT NULL) ALTER TABLE IF NOT EXISTS comentariosADD CONSTRAINTS FK\_ComentarioUsuarioFOREIGN KEY(usuario\_id) REFERENCES usuarios(id) ALTER TABLE IF NOT EXISTS comentariosADD CONSTRAINTS FK\_ComentarioPostFOREIGN KEY(post\_id) REFERENCES posts(id) \--Reto 2 INSERT INTO comentarios(id, cuerpo\_comentario, usuario\_id, post\_id) VALUES (1, 'Comentario 1', 1, 54),        (2, 'Comentario 2', 1, 43),        (3, 'Comentario 3', 1, 43) \--Reto 3SELECT \* FROM comentarios \--Reto 4SELECT c.cuerpo\_comentario AS comentario, u.login AS usuario, p.titulo AS postFROM comentarios AS cINNER JOIN posts AS p ON c.post\_id = p.idINNER JOIN usuarios AS u ON c.usuario\_id = u.idWHERE  usuario\_id = 1
Casi que no!! Es muy importante fijarse en un id de posts que coincida con el "usuario 1" = Israel. ![](https://static.platzi.com/media/user_upload/image-8d855bea-0981-4dae-9f1a-b2ed82c99ebe.jpg)
```txt -- Tu código aquí 👇 --1 create table comentarios( id int not null, cuerpo_comentario text not null, usuario_id int not null, post_id int not null, primary key (id), foreign key (usuario_id) references usuarios(id) on delete cascade, foreign key (post_id) references posts(id) on delete cascade ); --2 insert into comentarios (id, cuerpo_comentario, usuario_id, post_id) values (1, "Excelente post", 1,50 ), (2, "Excelente post,recomendado", 1,48 ), (3, "Excelente post", 2,52 ); --3 select * from comentarios; --4 select comentarios.cuerpo_comentario as comentario, usuarios.login as usuario, posts.titulo as post from comentarios inner join posts on comentarios.post_id = posts.id inner join usuarios on comentarios.usuario_id = usuarios.id where comentarios.usuario_id = 1; ```
Realize mi codigo completamente, siguiendo la super enseñanza del profe. la consola me muestra el resultado perfectamente ,pero al correr las pruebas me arrojaron errores// ![](https://static.platzi.com/media/user_upload/image-d906fca3-88fa-41d2-885c-654f9ed385ac.jpg) despues de analizar, me di cuenta que en el reto 4, no estaba declarando la tabla de donde provenia la informacion durante el inner join. Sin embargo al realizar las correcciones pertinentes , volvi a visualizar la informacion de las tablas, ym di cuenta que estaba brindando un numero de usuario\_id que no existia y por eso no se relacionaba la informacion que pedia vs la que existe en memoria ![](https://static.platzi.com/media/user_upload/image-68044108-224f-432c-a143-6101846372a9.jpg)
Realize mi codigo completamente, siguiendo la super enseñanza del profe. la consola me muestra el resultado perfectamente ,pero al correr las pruebas me arrojaron errores// despues de analizar, me di cuenta que en el reto 4, no estaba declarando la tabla de donde provenia la informacion durante el inner join. Sin embargo al realizar las correcciones pertinentes , volvi a visualizar la informacion de las tablas, ym di cuenta que estaba brindando un numero de usuario\_id que no existia y por eso no se relacionaba la informacion que pedia vs la que existe en memoria ![](https://static.platzi.com/media/user_upload/image-9f6ad2a4-3078-4337-a947-c9c8040f20de.jpg)
Era necesario la relación en la tablas? aun asi me funciono ```js CREATE TABLE comentarios( id int, cuerpo_comentario varchar(255), usuario_id INT, post_id INT ); INSERT INTO comentarios(id,cuerpo_comentario,usuario_id,post_id) VALUES (1,"primer comentario",1,43); INSERT INTO comentarios(id,cuerpo_comentario,usuario_id,post_id) VALUES (2,"segundo comentario",1,43); INSERT INTO comentarios(id,cuerpo_comentario,usuario_id,post_id) VALUES (3,"tercer comentario",2,43); SELECT * FROM comentarios; SELECT c.cuerpo_comentario AS comentario, u.login AS usuario, p.titulo AS post FROM comentarios AS c INNER JOIN posts AS p ON c.post_id = p.id INNER JOIN usuarios AS u ON p.usuario_id = u.id WHERE c.usuario_id = 1 ```CREATE TABLE comentarios( id int, cuerpo\_comentario varchar(255), usuario\_id INT, post\_id INT);INSERT INTO comentarios(id,cuerpo\_comentario,usuario\_id,post\_id)VALUES (1,"primer comentario",1,43); INSERT INTO comentarios(id,cuerpo\_comentario,usuario\_id,post\_id)VALUES (2,"segundo comentario",1,43); INSERT INTO comentarios(id,cuerpo\_comentario,usuario\_id,post\_id)VALUES (3,"tercer comentario",2,43); SELECT \* FROM comentarios; SELECT c.cuerpo\_comentario AS comentario, u.login AS usuario, p.titulo AS postFROM comentarios AS cINNER JOIN posts AS pON c.post\_id = p.idINNER JOIN usuarios AS uON p.usuario\_id = u.idWHERE c.usuario\_id = 1
Era necesario crear la relacion en las tablas? aun asi me funciono ```txt CREATE TABLE comentarios( id int, cuerpo_comentario varchar(255), usuario_id INT, post_id INT ); INSERT INTO comentarios(id,cuerpo_comentario,usuario_id,post_id) VALUES (1,"primer comentario",1,43); INSERT INTO comentarios(id,cuerpo_comentario,usuario_id,post_id) VALUES (2,"segundo comentario",1,43); INSERT INTO comentarios(id,cuerpo_comentario,usuario_id,post_id) VALUES (3,"tercer comentario",2,43); SELECT * FROM comentarios; SELECT c.cuerpo_comentario AS comentario, u.login AS usuario, p.titulo AS post FROM comentarios AS c INNER JOIN posts AS p ON c.post_id = p.id INNER JOIN usuarios AS u ON p.usuario_id = u.id WHERE c.usuario_id = 1 ```CREATE TABLE comentarios( id int, cuerpo\_comentario varchar(255), usuario\_id INT, post\_id INT);INSERT INTO comentarios(id,cuerpo\_comentario,usuario\_id,post\_id)VALUES (1,"primer comentario",1,43); INSERT INTO comentarios(id,cuerpo\_comentario,usuario\_id,post\_id)VALUES (2,"segundo comentario",1,43); INSERT INTO comentarios(id,cuerpo\_comentario,usuario\_id,post\_id)VALUES (3,"tercer comentario",2,43); SELECT \* FROM comentarios; SELECT c.cuerpo\_comentario AS comentario, u.login AS usuario, p.titulo AS postFROM comentarios AS cINNER JOIN posts AS pON c.post\_id = p.idINNER JOIN usuarios AS uON p.usuario\_id = u.idWHERE c.usuario\_id = 1
**Solucion:** CREATE TABLE comentarios ( id INT NOT NULL , cuerpo\_comentario TEXT, usuario\_id INT, post\_id INT, PRIMARY KEY(id), FOREIGN KEY(usuario\_id) REFERENCES usuarios(id) ON DELETE CASCADE ON UPDATE NO ACTION FOREIGN KEY(post\_id) REFERENCES posts(id)); INSERT INTO comentarios (id, cuerpo\_comentario, usuario\_id, post\_id)VALUES (1,"Comentario 1", 2, 43),(2,"Comentario 2", 1, 43),(3,"Comentario 3", 1, 43); SELECT \* FROM comentarios; SELECT c.cuerpo\_comentario AS comentario, u.login AS usuario, p.titulo AS postFROM comentarios c INNER JOIN posts p ON p.id=c.post\_idINNER JOIN usuarios u ON u.id=c.usuario\_idWHERE c.usuario\_id=1; ```js CREATE TABLE comentarios ( id INT NOT NULL , cuerpo_comentario TEXT, usuario_id INT, post_id INT, PRIMARY KEY(id), FOREIGN KEY(usuario_id) REFERENCES usuarios(id) ON DELETE CASCADE ON UPDATE NO ACTION FOREIGN KEY(post_id) REFERENCES posts(id) ); INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (1,"Comentario 1", 2, 43), (2,"Comentario 2", 1, 43), (3,"Comentario 3", 1, 43); SELECT * FROM comentarios; SELECT c.cuerpo_comentario AS comentario, u.login AS usuario, p.titulo AS post FROM comentarios c INNER JOIN posts p ON p.id=c.post_id INNER JOIN usuarios u ON u.id=c.usuario_id WHERE c.usuario_id=1; ```
Spoilers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ![](https://static.platzi.com/media/user_upload/image-2d664454-fa97-4425-a20a-8b57f61eabca.jpg)
reto realizado ```js CREATE TABLE comentarios( id INT PRIMARYKEY NOT NULL, cuerpo_comentario TEXT, usuario_id INT, post_id INT ); INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (1, "uno de los mejores que he visto", 1, 43), (2, "me hizo falta mas informacion", 1, 44), (3, "que increible estrategia", 3, 50), (4, "y que sucede con los demas", 4, 45), (5, "incentar una prueba de negocio exitosa", 2, 52); SELECT * FROM comentarios; SELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post FROM usuarios INNER JOIN comentarios ON usuarios.id = comentarios.usuario_id INNER JOIN posts ON comentarios.post_id = posts.id WHERE usuarios.id = 1; ```
![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202024-04-23%20093300-e87f74c9-88af-4840-bd27-159876f77ebd.jpg)
´´´´ \--Para resolver este desafio debes crear una tabla comentarios, agregar al menos 3 comentarios, imprimir todos los comentarios de la tabla y finalmente imprimir los comentarios de un usuario especial con un formato en específico. /\* Para resolver este desafio debes crear una tabla comentarios, agregar al menos 3 comentarios, imprimir todos los comentarios de la tabla y finalmente imprimir los comentarios de un usuario especial con un formato en específico.   • Reto 1: crear la tabla Crea una tabla comentarios con las columnas id, cuerpo\_comentario, usuario\_id y post\_id. \*/ CREATE TABLE IF NOT EXISTS comentarios ( id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL, cuerpo\_comentario TEXT NOT NULL, usuario\_id INTEGER NOT NULL, post\_id INTEGER NOT NULL, FOREIGN KEY (usuario\_id) REFERENCES usuario\_id, FOREIGN KEY (post\_id) REFERENCES post\_id ); /\* • Reto 2: agrega registros  Inserta al menos 3 comentarios en la tabla. Puedes escribir tantos comentarios como quieras. Asegúrate de que solo en 2 el usuario\_id sea 1. \*/ INSERT INTO comentarios (id,cuerpo\_comentario,usuario\_id,post\_id) VALUES (1,"Comentario 1","1","47"), (2,"Comentario 2","2","48"), (3,"Comentario 3","3","49"), (4,"Comentario 4","4","50"); /\* • Reto 3: imprime registros  Imprime todas las columnas de todos los registros de la tabla comentarios. \*/ SELECT \* FROM comentarios; /\* • Reto 4: imprime registros del usuario 1  Selecciona los 2 comentarios del usuario 1. Haz un JOIN para conseguir la información del post relacionado con la propiedad post\_id y el usuario rerlacionado con la propiedad usuario\_id. Imprime la propiedad comentarios.cuerpo\_comentario como comentario, usuarios.login como usuario y posts.titulo como post. \*/ SELECT comentarios.cuerpo\_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post FROM comentarios INNER JOIN posts ON posts.id = comentarios.post\_id INNER JOIN usuarios ON usuarios.id = comentarios.usuario\_id WHERE comentarios.usuario\_id = 1; ´´´´
No sé por qué me quedó mal según las pruebas, si hasta lo pasé por copilot :( ```js CREATE TABLE comentarios ( id INTEGER PRIMARY KEY NOT NULL, cuerpo_comentario TEXT NOT NULL, usuario_id INTEGER NOT NULL, post_id INTEGER NOT NULL, FOREIGN KEY (usuario_id) REFERENCES usuarios(id), FOREIGN KEY (post_id) REFERENCES posts(id) ); INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (1, 'Comentario 1', 2, 54), (2, 'Comentario 2', 1, 43), (3, 'Comentario 3', 1, 43); SELECT * FROM comentarios; SELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post FROM comentarios INNER JOIN posts ON comentarios.post_id = posts.id INNER JOIN usuarios ON comentarios.usuario_id = usuarios.id WHERE comentarios.usuario_id = 1; ````CREATE TABLE` comentarios ( ` id INTEGER PRIMARY KEY NOT NULL`, ` cuerpo_comentario TEXT NOT NULL`, ` usuario_id INTEGER NOT NULL`, ` post_id INTEGER NOT NULL`, ` FOREIGN KEY (usuario_id) REFERENCES` usuarios(id), ` FOREIGN KEY (post_id) REFERENCES` posts(id) ); `INSERT INTO` comentarios (id, cuerpo\_comentario, usuario\_id, post\_id) `VALUES (1, 'Comentario 1', 2, 54`), ` (2, 'Comentario 2', 1, 43`), ` (3, 'Comentario 3', 1, 43`); `SELECT *` `FROM` comentarios; `SELECT comentarios.cuerpo_comentario AS` comentario, ` usuarios.login AS` usuario, ` posts.titulo AS` post `FROM` comentarios `INNER JOIN posts ON comentarios.post_id =` posts.id `INNER JOIN usuarios ON comentarios.usuario_id =` usuarios.id `WHERE comentarios.usuario_id = 1;`
Alguien me puede ayudar del porque me sale error si el resultado es correcto? Alguien me puede ayudar del porque me sale error en las pruebas si lo hize como pedia?```js -- RETO 1 CREATE TABLE comentarios( id INT NOT NULL, cuerpo_comentario VARCHAR(100), usuario_id INT, post_id INT, PRIMARY KEY(id), FOREIGN KEY (usuario_id) REFERENCES usuarios(usuario_id) FOREIGN KEY (post_id) REFERENCES posts(post_id)); -- RETO 2 INSERT INTO comentarios ( id, cuerpo_comentario, usuario_id, post_id) VALUES (1, 'comentario 1', 1, 43), (2, 'comentario 2', 1, 43), (3, 'comentario 3', 2, 46); -- RETO 3 SELECT * FROM comentarios; -- RETO 4 SELECT posts.titulo AS post, usuarios.login AS usuario, comentarios.cuerpo_comentario AS comentario FROM comentarios INNER JOIN usuarios ON comentarios.usuario_id=usuarios.id INNER JOIN posts ON comentarios.post_id = posts.idWHERE comentarios.usuario_id=1; ```
Alguien me puede ayudar del porque me sale error en las pruebas si lo hize como pedia? `-- RETO 1` `CREATE TABLE comentarios(  id INT NOT NULL,  cuerpo_comentario VARCHAR(100),  usuario_id INT,  post_id INT,  PRIMARY KEY(id),  FOREIGN KEY (usuario_id) REFERENCES usuarios(usuario_id)  FOREIGN KEY (post_id) REFERENCES posts(post_id));` `-- RETO 2` `INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)VALUES (1, 'comentario 1', 1, 43), (2, 'comentario 2', 1, 43),(3, 'comentario 3', 2, 46);` `-- RETO 3` `SELECT * FROM comentarios;` `-- RETO 4` `SELECT       posts.titulo AS post,  usuarios.login AS usuario,  comentarios.cuerpo_comentario AS comentarioFROM comentarios  INNER JOIN usuarios ON comentarios.usuario_id=usuarios.id  INNER JOIN posts ON comentarios.post_id = posts.idWHERE comentarios.usuario_id=1;` vista consola: ![](https://postimg.cc/PN2pMS6L) vista pruebas: ![](https://postimg.cc/8fPFSvCP)
\-- RETO 1CREATE TABLE IF NOT EXISTS comentarios (   id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,   cuerpo\_comentario VARCHAR(255) NOT NULL,   usuario\_id INTEGER NOT NULL,   post\_id INTEGER NOT NULL); \-- RETO 2INSERT INTO comentarios (cuerpo\_comentario, usuario\_id, post\_id) VALUES ("HOLA SOY EL COMENTARIO 1", 1, 63),("HOLA SOY EL COMENTARIO 2", 1, 57),("HOLA SOY EL COMENTARIO 3", 2, 44); \-- RETO 3SELECT \* FROM comentarios; \-- RETO 4SELECT comentarios.cuerpo\_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post  FROM comentarios   INNER JOIN posts ON posts.id = comentarios.post\_id  INNER JOIN usuarios ON usuarios.id = comentarios.usuario\_idWHERE comentarios.usuario\_id = 1;
Solución del reto: \-- Reto 1 -- ```js CREATE TABLE comentarios ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, cuerpo_comentario text NOT NULL, usuario_id INTEGER NOT NULL, post_id INTEGER NOT NULL, CONSTRAINT comentarios_post FOREIGN KEY (post_id) REFERENCES posts (id) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT comentarios_usuario FOREIGN KEY (usuario_id) REFERENCES usuarios (id) ON DELETE NO ACTION ON UPDATE NO ACTION ); ```-- Reto 2 -- ```js INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES ("Primer comentario", 1, 43), ("Segundo comentario", 1, 56), ("Tercer comentario", 2, 63); ```--Reto 3-- ```js SELECT * FROM comentarios; ```--Reto 4-- ```js SELECT posts.titulo AS post, usuarios.login AS usuario, comentarios.cuerpo_comentario AS comentario FROM comentarios INNER JOIN usuarios ON comentarios.usuario_id = usuarios.id INNER JOIN posts ON comentarios.post_id = posts.id WHERE comentarios.usuario_id = 1; ```Espero les sirva para resolver sus dudas.!!!
![](https://static.platzi.com/media/user_upload/image-fbf612db-664d-440e-b8f1-9f32140e73ad.jpg) ```js CREATE TABLE comentarios(  id INTEGER PRIMARY KEY NOT NULL,  cuerpo_comentario TEXT,  usuario_id INTEGER,  post_id INTEGER ); INSERT INTO comentarios (id,cuerpo_comentario,usuario_id,post_id)VALUES (1,"HOLA",1,43); INSERT INTO comentarios (id,cuerpo_comentario,usuario_id,post_id)VALUES (2,"HOLA",1,44); INSERT INTO comentarios (id,cuerpo_comentario,usuario_id,post_id)VALUES (3,"HOLA",2,45); SELECT * FROM comentarios; SELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario,posts.titulo AS post FROM comentarios INNER JOIN usuarios ON comentarios.usuario_id=usuarios.id INNER JOIN posts ON comentarios.post_id=posts.id WHERE comentarios.usuario_id=1; ```CREATE TABLE comentarios (  id INTEGER PRIMARY KEY NOT NULL,  cuerpo\_comentario TEXT,  usuario\_id INTEGER,  post\_id INTEGER); INSERT INTO comentarios (id,cuerpo\_comentario,usuario\_id,post\_id)VALUES (1,"HOLA",1,43); INSERT INTO comentarios (id,cuerpo\_comentario,usuario\_id,post\_id)VALUES (2,"HOLA",1,44); INSERT INTO comentarios (id,cuerpo\_comentario,usuario\_id,post\_id)VALUES (3,"HOLA",2,45); SELECT \* FROM comentarios; SELECT comentarios.cuerpo\_comentario AS comentario, usuarios.login AS usuario,posts.titulo AS postFROM comentariosINNER JOIN usuarios ON comentarios.usuario\_id=usuarios.idINNER JOIN posts ON comentarios.post\_id=posts.idWHERE comentarios.usuario\_id=1;

Me costó bastante llegar a la solución, no le agregué las FK porque de todas maneras funcionó:

CREATE TABLE IF NOT EXISTS comentarios (
  id INTEGER PRiMARY KEY NOT NULL,
  cuerpo_comentario VARCHAR(1000) NOT NULL,
  usuario_id INTEGER NOT NULL,
  post_id INTEGER NOT NULL
);

INSERT INTO comentarios 
( id, cuerpo_comentario, usuario_id, post_id )
VALUES 
(1, "Comentario 1", 1, 43),
(2,"Comentario 2", 1, 43),
(3,"Comentario 3", 2, 44);

SELECT * FROM comentarios;

SELECT comentarios.cuerpo_comentario AS comentario,
usuarios.login AS usuario,
posts.titulo AS post
FROM comentarios
INNER JOIN usuarios ON usuarios.id = comentarios.usuario_id
INNER JOIN posts ON posts.id = comentarios.post_id
WHERE comentarios.usuario_id = 1;
CREATE TABLE IF NOT EXISTS comentarios (  id INTEGER NOT NULL,  cuerpo\_comentario TEXT,  usuario\_id INTEGER NOT NULL,  post\_id INTEGER NOT NULL,  FOREIGN KEY (usuario\_id) REFERENCES usuarios (id),  FOREIGN KEY (post\_id) REFERENCES posts (id)  PRIMARY KEY (id)); INSERT INTO comentarios (id, cuerpo\_comentario, usuario\_id, post\_id)VALUES (1, "comentario de prueba", 1, 62),(2, "comentario de prueba 2", 1, 63),(3, "comentario de prueba 3", 2, 56); SELECT \* FROM comentarios; SELECT c.cuerpo\_comentario AS comentario,u.login AS usuario,p.titulo AS postFROM comentarios AS cINNER JOIN usuarios AS u ON c.usuario\_id = u.idINNER JOIN posts AS p ON c.post\_id = p.idWHERE u.id = 1;
Un poco confuso el te-- Tu código aquí 👇 CREATE TABLE comentarios(  id int(11) NOT NULL,  cuerpo\_comentario TEXT NOT NULL,  usuario\_id int(11) DEFAULT NULL,  post\_id int(11) DEFAULT NULL); INSERT INTO comentarios (id, cuerpo\_comentario, usuario\_id, post\_id) VALUES (1,'COMENTARIO 1', 1,43);INSERT INTO comentarios (id, cuerpo\_comentario, usuario\_id, post\_id) VALUES (2,'COMENTARIO 2', 1,48);INSERT INTO comentarios (id, cuerpo\_comentario, usuario\_id, post\_id) VALUES (3,'COMENTARIO 3', 2,45); SELECT \* FROM comentarios; SELECT a.cuerpo\_comentario AS comentario, u.login AS usuario, p.titulo as postFROM comentarios AS aLEFT JOIN usuarios AS uON a.usuario\_id = u.idLEFT JOIN posts AS pON p.id= a.post\_idwhere a.usuario\_id=1;xto pero ahí vamos:
Reto 1CREATE TABLE comentarios (  id INTEGER PRIMARY KEY AUTOINCREMENT  NOT NULL,  cuerpo\_comentario VARCHAR(255),  usuario\_id INT NOT NULL,  post\_id INT NOT NULL,  FOREIGN KEY (usuario\_id) REFERENCES usuarios(id)  FOREIGN KEY (post\_id) REFERENCES posts(id)INSERT INTO comentarios (cuerpo\_comentario, usuario\_id, post\_id) VALUES ("Comentario 1", 1, 43);INSERT INTO comentarios (cuerpo\_comentario, usuario\_id, post\_id) VALUES ("Comentario 2", 1, 43);INSERT INTO comentarios (cuerpo\_comentario, usuario\_id, post\_id) VALUES ("Comentario 3",2, 44);SELECT \* FROM comentarios; ); ```js CREATE TABLE comentarios ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, cuerpo_comentario VARCHAR(255), usuario_id INT NOT NULL, post_id INT NOT NULL, FOREIGN KEY (usuario_id) REFERENCES usuarios(id) FOREIGN KEY (post_id) REFERENCES posts(id) ); ```Reto 2: ```js INSERT INTO comentarios (cuerpo_comentario, usuario_id, post_id) VALUES ("Comentario 1", 1, 43); INSERT INTO comentarios (cuerpo_comentario, usuario_id, post_id) VALUES ("Comentario 2", 1, 43); INSERT INTO comentarios (cuerpo_comentario, usuario_id, post_id) VALUES ("Comentario 3",2, 44); ``` Reto 3 ```js SELECT * FROM comentarios; ``` Reto 4 ```js SELECT comentarios.cuerpo_comentario as comentario, usuarios.login as usuario, posts.titulo as post FROM usuarios INNER JOIN comentarios ON usuarios.id = comentarios.usuario_id AND usuarios.id = 1 INNER JOIN posts ON posts.id = comentarios.post_id; ```
El "usuario\_id" si te aclaran en la guia que en 2 registros debe ser "1" pero, nunca entendi como saben que el post\_id tiene que ser 43 para que funcione, ya que el usuaerio ID 1 tambien está en otros post, alguien sabe o dedujo como? que no haya tenido que ver a venir ese dato, ya que era lo único que me fallaba, lo coloque como lo vi en comentarios y funcionó, pero no entiendo como supieron
Por que aqui se tiene que poner INTEGER en lugar de INT y AUTOINCREMENT en lugar de AUTO\_INCREMENT, las segundas de cada una es como en realidad se maneja en MySQL pero aqui no funciona si lo colocas así
·· Hola comunidad·· Esta es mi solución; ```txt CREATE TABLE IF NOT EXISTS comentarios ( id INTEGER PRIMARY KEY NOT NULL, cuerpo_comentario varchar (255) NOT NULL, usuario_id INTEGER NOT NULL, post_id INTEGER NOT NULL, FOREIGN KEY (usuario_id) REFERENCES usuarios(id), FOREIGN KEY (post_id) REFERENCES posts(id) ); INSERT INTO `comentarios`(`id`, `cuerpo_comentario`, `usuario_id`, `post_id`) VALUES (1, "Los temas son muy interesantes y de gran utilidad para la vida cotidiana", 2, 54 ), (2, "El fabricante deberia expandir su flota de mensajeros para que los productos lleguen a tiempo", 1, 43), (3, "Es increible todo lo que avanza la ciencia en el campo genetico", 1, 43); SELECT * FROM comentarios; SELECT c.cuerpo_comentario AS comentario, u.login AS usuario, p.titulo AS post FROM comentarios AS c INNER JOIN posts AS p ON p.id = c.post_id INNER JOIN usuarios AS u ON u.id = c.usuario_id WHERE c.usuario_id = 1; ```El análisis para solucionar el reto 4 en mi caso fue el siguiente; ¡para obtener todos los comentarios escritos por el usuario 1, primero debo unir la tabla 'comentarios' con la tabla 'posts' y esto lo hago de la siguiente manera, como la tabla 'posts' no tiene una clave foránea llamada 'comentario\_id' entonces no puedo unir 'comentarios.id' con 'posts.comentario\_id', por lo tanto, invierto el proceso, utilizo primero el 'posts.id' de la tabla 'posts' y lo enlazo con la clave foránea llamada 'post\_id' de la tabla 'comentarios' ya que esta combinación si es posible, (INNER JOIN posts AS p ON p.id = c.post\_id), listo como ya uní 'comentarios' con 'posts' ahora prosigo a enlazar la tabla 'usuarios' con la tabla 'comentarios', el razonamiento es exactamente el mismo, recuerda la tabla 'usuarios' no tiene una clave foránea llamada 'comentario\_id' por lo tanto debemos invertir el proceso (INNER JOIN usuarios AS u ON u.id = c.usuario\_id) y listo, así unimos las tablas para poder agregar nuestro condicional 'WHERE'. Espero que esto les sirva de ayuda. <3
Una duda, justo antes de hacer los JOINS, es estrictamente necesario poner FROM "comentarios"? No puedo poner FROM "usuarios" o "posts"? Como en el SELECT que hicimos estamos seleccionando columnas de 3 tablas, yo pensé que podíamos usar el FROM de cualquiera de las 3 tablas, no es así? Yo lo hice con FROM "usuarios" y me ejecutaba correcto el código; sin embargo me da error en las pruebas. En ese caso, cómo se cuál tabla debo poner en el FROM? Cuál es la lógica? Muchas gracias!!
Aquí mi solución my friends 😎 ![](https://static.platzi.com/media/user_upload/image-35c38cfb-4bfc-432f-8cbb-41dc253a9884.jpg)
Amigos, el reto me tomó tiempo, pero está increible pones a prueba lo apredindo. Eso sí, coloquen los nombres tal cual indican porque sino te bota error y puede que todo el query ande bien.
No pude ejecutar mi código al ultimo porque habia colocado valores como 1 y 2 en la columna post\_id entonces despues de reojear mi codigo me rendí y fui a ver comentarios que colocaban sus posts ids en numero mayores de 43 y ahi me di cuenta lo importante que es analizar los datos de entrada, cambié los ids y todo funciono jajaja, estaba a punto de reclamar que no estaba por ningun lado en la consigna pero debí haberme dado cuenta, Que importante es consultar todos los datos de entrada
Mirando varias formas de solucionar el reto, encontre otro modo en el cual se puede realizar, ya que el cuarto punto podia crear confusuib ELECT comentarios.cuerpo\_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS postFROM comentariosLEFT JOIN posts ON posts.id = comentarios.post\_idINNER JOIN usuarios ON usuarios.id = comentarios.usuario\_idWHERE comentarios.usuario\_id = 1;```js ELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post FROM comentarios LEFT JOIN posts ON posts.id = comentarios.post_id INNER JOIN usuarios ON usuarios.id = comentarios.usuario_id WHERE comentarios.usuario_id = 1; ```en este caso usamos el LEFT JOIN para que este traiga la informacion asocidada a la tabla posts, pero con la condicional de que el usario sea el numero 1, así al momento de insertar los datos no sea necesario que el comentario sea del mismo post\_id
Obtuve los datos, mas no coincidi en sintaxis con el sandbox de practica de platzi, en fin la \*Hipotenusa
select c.cuerpo_comentario as comentarios,
u.login as usuario,
p.titulo as post_id
from comentarios c
inner join posts p on p.id=c.post_id
inner join usuarios u on u.id=c.usuario_id
where c.usuario_id=1;

Tuve un par de problemas a la hora de realizarlo ya que me faltaron unas comas jajaja. Pero aquí va mi solución, un saludo para todos:

CREATE TABLE comentarios (
  id INT NOT NULL PRIMARY KEY,
  cuerpo_comentario TEXT,
  usuario_id INT,
  post_id INT,

  CONSTRAINT comentarios_usuario FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
  CONSTRAINT comentarios_posts FOREIGN KEY (post_id) REFERENCES posts(id)
);

INSERT INTO comentarios VALUES
  (1, "Phasellus mattis ex nisi, non sagittis arcu aliquam sed.", 2, 43),
  (2, "Phasellus mattis ex nisi, non sagittis arcu aliquam sed.", 1, 47),
  (3, "Phasellus mattis ex nisi, non sagittis arcu aliquam sed.", 3, 59),
  (4, "Phasellus mattis ex nisi, non sagittis arcu aliquam sed.", 3, 56),
  (5, "Phasellus mattis ex nisi, non sagittis arcu aliquam sed.", 1, 44);

SELECT * FROM comentarios;

SELECT
  comentarios.cuerpo_comentario AS comentario,
  usuarios.login AS usuario,
  posts.titulo AS post
FROM comentarios
INNER JOIN usuarios
  ON comentarios.usuario_id = usuarios.id
INNER JOIN posts
  ON comentarios.post_id = posts.id
WHERE comentarios.usuario_id = 1;
Mi solución, cumple con lo que se pide en la guía: ![](https://static.platzi.com/media/user_upload/image-c21ff29b-2d0e-4ba1-91fb-fe32e2c25552.jpg)
# Hola, Comunidad de Platzi. ## Les dejo mi aporte para que puedan ver otra solución ¡**IMPORTANTE! BORREN LOS CINCO QUERIES QUE SE HACEN AL PRINCIPIO PARA EVITAR PROBLEMA CON LA EJECUCIÓN** ```js CREATE TABLE comentarios( id INTEGER PRIMARY KEY NOT NULL, cuerpo_comentario VARCHAR(255) NOT NULL, usuario_id INTEGER, post_id INTEGER, FOREIGN KEY (usuario_id) REFERENCES usuarios(id), FOREIGN KEY (post_id) REFERENCES posts(id) ); INSERT INTO comentarios(id, cuerpo_comentario, usuario_id, post_id) VALUES (1, 'Hola mundo soy Juan', 1, 43); INSERT INTO comentarios(id, cuerpo_comentario, usuario_id, post_id) VALUES (2, 'Este es el segundo comentario que existe en la tabla', 1, 45); INSERT INTO comentarios(id, cuerpo_comentario, usuario_id, post_id) VALUES (3, 'Al menos 3 comentarios', 2, 58); INSERT INTO comentarios(id, cuerpo_comentario, usuario_id, post_id) VALUES (4, 'Otro comentario xd', 2, 58); SELECT * FROM comentarios; SELECT cuerpo_comentario AS comentario, GROUP_CONCAT(usuarios.login) AS usuario, GROUP_CONCAT(posts.titulo) AS post FROM comentarios INNER JOIN usuarios ON usuarios.id = comentarios.usuario_id INNER JOIN posts ON posts.id = comentarios.post_id WHERE usuarios.id = 1 GROUP BY comentarios.id ; ```
\#Hola
UN BUEN RETO... ![](https://static.platzi.com/media/user_upload/image-38393e2a-073c-4bff-a6d6-e4cf9b290ca1.jpg)
-- Tu código aquí 👇
--Reto 1:
CREATE TABLE comentarios (
  id PRIMARY KEY,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INT NOT NULL,
  post_id INT NOT NULL,
  CONSTRAINT "usuario_id"
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
  CONSTRAINT "post_id"
    FOREIGN KEY (post_id) REFERENCES posts(id)
);
-- Reto 2:
INSERT INTO comentarios ( id,cuerpo_comentario,usuario_id,post_id)
VALUES 
(1,"Buen trabajo",1,4),
(2,"Buen trabajo chicos",2,5),
(3,"Buen trabajo compañeros",1,6);
-- Reto 3:
SELECT * FROM comentarios;
--Reto 4:
SELECT 
  comentarios.cuerpo_comentario AS comentario, 
  usuarios.login AS usuario, 
  posts.titulo AS post
FROM comentarios
  LEFT JOIN usuarios ON usuarios.id = comentarios.usuario_id
  LEFT JOIN posts ON posts.id = comentarios.post_id
WHERE comentarios.usuario_id = 1;
![](https://static.platzi.com/media/user_upload/imagen-46ba05a9-2421-4041-8926-d43f842c0f21.jpg)![](https://static.platzi.com/media/user_upload/imagen-db92db38-9f9a-4a59-90dc-2db86610b7ad.jpg)
CREATE TABLE comentarios (
  id INT NOT NULL,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INT NOT NULL,
  post_id INT NOT NULL,
  PRIMARY KEY (id),
  CONSTRAINT `usuario_id`
    FOREIGN KEY (`usuario_id`)
    REFERENCES `usuarios` (`id`),
  CONSTRAINT `post_id`
    FOREIGN KEY (`post_id`)
    REFERENCES `posts` (`id`)
);

INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
VALUES (1, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Tincidunt arcu non sodales neque sodales ut. Tempus quam pellentesque nec nam aliquam sem.", 1, 43), (2, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Tincidunt arcu non sodales neque sodales ut. Tempus quam pellentesque nec nam aliquam sem.", 1, 44), (3, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Tincidunt arcu non sodales neque sodales ut. Tempus quam pellentesque nec nam aliquam sem.", 2, 45), (4, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Tincidunt arcu non sodales neque sodales ut. Tempus quam pellentesque nec nam aliquam sem.", 3, 46);

SELECT *
FROM comentarios;

SELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post
FROM comentarios
INNER JOIN usuarios ON comentarios.usuario_id = usuarios.id
INNER JOIN posts ON comentarios.post_id = posts.id
WHERE comentarios.usuario_id = 1;
Recuerden quitar los SELECT que hay por default.... Media hora viendo por que no pasaban los tests :)
\-- Tu código aquí 👇 CREATE TABLE IF NOT EXISTS comentarios( id INTEGER PRIMARY KEY NOT NULL, cuerpo\_comentario VARCHAR(255) NOT NULL, usuario\_id INTEGER NOT NULL, post\_id INTEGER NOT NULL ); INSERT INTO comentarios (id, cuerpo\_comentario, usuario\_id, post\_id) VALUES (1, "Hola, primer comentario", 1, 43); INSERT INTO comentarios (id, cuerpo\_comentario, usuario\_id, post\_id) VALUES (2, "Hola, segundo comentario", 1, 44); INSERT INTO comentarios (id, cuerpo\_comentario, usuario\_id, post\_id) VALUES (3, "Hola, tercer comentario", 2, 45); INSERT INTO comentarios (id, cuerpo\_comentario, usuario\_id, post\_id) VALUES (4, "Hola, cuarto comentario", 3, 46); SELECT \* FROM comentarios; SELECT comentarios.cuerpo\_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post FROM comentarios INNER JOIN usuarios ON comentarios.usuario\_id = usuarios.id INNER JOIN posts ON comentarios.post\_id = posts.id WHERE comentarios.usuario\_id = 1;
Aquí mi solución con análisis (luego de una hora larga) \--1 CREATE TABLE comentarios (  id INTEGER PRIMARY KEY NOT NULL,  cuerpo\_comentario TEXT NOT NULL,  usuario\_id INTEGER NOT NULL,  post\_id INTEGER NOT NULL,  FOREIGN KEY (usuario\_id) REFERENCES usuarios(id)  FOREIGN KEY (post\_id) REFERENCES posts(id)  ); \--2 INSERT INTO comentarios (id, cuerpo\_comentario, usuario\_id, post\_id)VALUES   (1,"hola soy Monica",2,43),  (2,"hola tu, yo soy Israel",1,43),  (3,"Me gusta tocar guitarra",1,43); \--3 SELECT \* FROM comentarios; \--4 SELECT   posts.titulo AS post,  usuarios.login AS usuario,    comentarios.cuerpo\_comentario AS comentario FROM comentariosINNER JOIN usuarios ON usuarios.id = comentarios.usuario\_idINNER JOIN posts ON posts.id = comentarios.post\_idWHERE comentarios.usuario\_id = 1; SELECT \* FROM posts; Siempre considero importante ver la data que traen las tablas precargadas para entender qué tenemos y en este ejercicio es fundamental ya que al comienzo se nos pide que asignemos unos comentarios a un determinado post y lo primero que se nos viene a la mente es darle 1 al id del post, pero viendo la data que trae la tabla de "Posts" nos damos cuenta que no hay ningún post asociado a ese id, (los posts van del 43 al 63) por lo que al momento de hacer el segundo punto, deberás asignar los comentarios que creaste a cualquier post del 43 al 63.
![](https://static.platzi.com/media/user_upload/image-e843a713-44db-4cb4-92d8-53fe550264ef.jpg)![](https://static.platzi.com/media/user_upload/image-e049e020-16b5-4dd4-93e6-4b5758815a12.jpg)
Esta genial este curso. Se que tiene su antiguedad pero el valor de lo aprendido sigue vigente aun a dia de hoy octubre de 2023 (por suerte SQL sigue siendo lo mismo). Ahora a darle con las BBDD no relacionales.
```js -- Tu código aquí 👇 -- reto 1 CREATE TABLE comentarios( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, cuerpo_comentario TEXT, usuario_id INT, post_id INT, FOREIGN KEY (usuario_id) REFERENCES usuarios(id), FOREIGN KEY (post_id) REFERENCES posts(id) ); -- reto 2 INSERT INTO comentarios(id, cuerpo_comentario, usuario_id, post_id) VALUES (1,"Que gran informacion, gracias por compartir",2,44), (2,"He visto mejor informacion en wikipedia xd",1,43), (3,"Que flojera leer este tipo de posts jejeje",1,43); -- reto 3 SELECT * FROM comentarios; -- reto 4 SELECT c.cuerpo_comentario AS comentario,u.login AS usuario,p.titulo AS post FROM comentarios AS c INNER JOIN posts AS p ON c.post_id=p.id INNER JOIN usuarios AS u ON c.usuario_id=u.id WHERE u.id=1; ```asi lo hice yo

No fue a la primera pero todo salió bien:

CREATE TABLE comentarios (
  id INT NOT NULL,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INTEGER NOT NULL,
  post_id INTEGER NOT NULL
);

INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES
(1, "COMENTARIO 1", 1, 1),
(2, "COMENTARIO 2", 1, 2),
(3, "COMENTARIO 3", 2, 3),
(4, "COMENTARIO 3", 2, 4);

SELECT * FROM comentarios;

SELECT 
  c.cuerpo_comentario as comentario,
  u.login AS usuario,
  p.titulo AS post
FROM comentarios AS c
LEFT JOIN usuarios AS u ON c.usuario_id = u.id
LEFT JOIN posts AS p ON p.id = c.post_id
WHERE u.id = 1
Excelente ejercicio y gran curso espero que hagan mas retos como estos ![](https://static.platzi.com/media/user_upload/imagen-f356fce1-7b33-4881-b6f6-8e3f016aba28.jpg)Donde le subo la dificultad a los bots XD
-- Tu código aquí 👇
-- RETO 1
CREATE TABLE IF NOT EXISTS comentarios (
  id INTEGER PRIMARY KEY NOT NULL,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INTEGER NOT NULL,
  post_id INTEGER NOT NULL,
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
  FOREIGN KEY (post_id) REFERENCES posts(id)
);

-- RETO 2
INSERT 
  INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) 
  VALUES 
    (1, "Comentario uno",2,54),
    (2, "Comentario dos",1,43),
    (3, "Comentario tres",2,43);

-- RETO 3
SELECT * FROM comentarios;

-- RETO 4
SELECT 
    usuarios.login AS usuario, 
    posts.titulo AS post,
    comentarios.cuerpo_comentario AS comentario
FROM comentarios INNER JOIN posts 
  ON posts.id = comentarios.post_id
  INNER JOIN usuarios 
    ON usuarios.id = comentarios.usuario_id
WHERE comentarios.usuario_id = 1;

Este pasó todas las pruebas sin utilizar inner join

CREATE TABLE IF NOT EXISTS comentarios
(
  id INTEGER PRIMARY KEY NOT NULL,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INTEGER NOT NULL,
  post_id INTEGER NOT NULL,
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
  FOREIGN KEY (post_id) REFERENCES posts(id)
);

INSERT INTO comentarios
(id, cuerpo_comentario, usuario_id, post_id)
VALUES 
(1, "un día seremos leyenda",2,54),
(2, "Las máquinas podrán hacer lo que sea que haga la gente, porque las personas son solo máquinas.",1,43),
(3, "Me gustan las papitas fritas",1,43);

SELECT * FROM comentarios;

SELECT c.cuerpo_comentario as comentario, u.login as usuario, p.titulo as post  
FROM comentarios as c, usuarios as u, posts as p
WHERE p.id = c.post_id AND u.id = c.usuario_id AND c.usuario_id = 1;



Mi respuesta 👀:


-- Reto 1
CREATE TABLE IF NOT EXISTS comentarios (
  id INT UNSIGNED NOT NULL ,
  cuerpo_comentario TEXT,
  usuario_id INT,
  post_id INT,
  PRIMARY KEY (id),
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
  FOREIGN KEY (post_id) REFERENCES posts(id)
);


-- Reto 2
INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)  VALUES
(1, "Comentando 1", 1, 43 ),
(2, "Comentando 2", 1, 48 ),
(3, "Comentando 3", 2, 44);

-- Reto 3
SELECT * FROM comentarios;

-- Reto 4
SELECT comentarios.cuerpo_comentario AS comentario, 
usuarios.login AS usuario, posts.titulo AS post
FROM comentarios
	INNER JOIN usuarios
    ON usuarios.id = comentarios.usuario_id
    INNER JOIN posts
      ON posts.id = comentarios.post_id
WHERE comentarios.usuario_id = 1;

Para no llenar el campo cuerpo_comentario copie unos de reddit jejeje

CREATE TABLE comentarios(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
cuerpo_comentario varchar(255) NOT NULL,
usuario_id INTEGER NOT NULL,
post_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
FOREIGN KEY (post_id) REFERENCES posts(id)
);

INSERT INTO comentarios(cuerpo_comentario, usuario_id, post_id) VALUES
("GTX 970 has only 4GB of VRAM, and this game needs 6GB VRAM at least",1, 47),
("Have you looked into Cloud gaming through Gamepass?", 5, 63),
("difference is the Steam Deck effectively has 8GB+ of VRAM to work with since it's an iGPU. It's", 3, 48),
("If users can get Starfield running on a Steam Deck, you can most certainly play with a 970. You might have to upscale, but the silver lining here is that mixed Low settings look nearly identical", 1, 43);

SELECT * FROM comentarios;

SELECT 
	comentarios.cuerpo_comentario AS comentario,
	usuarios.login AS usuario,
	posts.titulo AS post
FROM comentarios
LEFT JOIN usuarios ON usuarios.id = comentarios.usuario_id
LEFT JOIN posts ON posts.id = comentarios.post_id
WHERE comentarios.usuario_id = 1;

Mi solución:

CREATE TABLE IF NOT EXISTS comentarios  (
  id INTEGER AUTO_INCREMENT PRIMARY KEY,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INTEGER,
  post_id INTEGER,
  FOREIGN KEY(usuario_id) REFERENCES usuarios(id),
  FOREIGN KEY(post_id) REFERENCES posts(id)
);

INSERT INTO comentarios VALUES(1,"Comentario 1", 2, 54),
(2,"Comentario 2", 1, 43),
(3,"Comentario 3", 1, 43);


SELECT * FROM comentarios;

SELECT 
  comentarios.cuerpo_comentario AS comentario,
  usuarios.login AS usuario,
  posts.titulo AS post
FROM posts INNER JOIN comentarios ON posts.id =  comentarios.post_id 
     INNER JOIN usuarios ON posts.usuario_id = usuarios.id 
WHERE  comentarios.usuario_id = 1 

Perdí un corazón, pero se logró ❤️

Esta fue mi solucion tuve demoras al momento de definir las FOREIGN KEY pero revisando apuntes y otras fuentes, se logro 💪🏻.

-- RETO 1
CREATE TABLE comentarios (
  id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  cuerpo_comentario VARCHAR (255),
  usuario_id INTEGER, 
  post_id INTEGER, 
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
  FOREIGN KEY (post_id) REFERENCES posts(id)
);
-- RETO 2
 INSERT INTO comentarios(id,cuerpo_comentario,usuario_id,post_id)
 VALUES(1,"El dia que se apago el sol",1,45),(2,"La noche mas oscura llego en martes 13",3,53), (3,"Volcan hace erupcion en hawai",1,63);
-- RETO 3
SELECT * FROM comentarios;
-- RETO 4
SELECT cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post FROM comentarios
 INNER JOIN posts ON comentarios.post_id = posts.id
 INNER JOIN usuarios ON comentarios.usuario_id = usuarios.id
WHERE usuarios.id=1 ;

Tardé mucho tiempo en hacer esta prueba porque el ejercicio trae la instrucción de traer los comentarios del usuario 1, pero al correr la prueba sale error, no tienes que realizar ese reto para que la consulta salga bien.

Aquí mi solución, aunque sería genial que alguien me explicara porque estás usando left join o inner join ya que en mi caso no fue necesario:

create table comentarios(
id int not null primary key unique,
cuerpo_comentario text not null,
usuario_id int not null,
post_id int not null
);

insert into comentarios(id, cuerpo_comentario, usuario_id, post_id)
values ('1','comentario_1','1','43'),
('2','comentario_2','3','44'),
('3','comentario_4','2','43'),
('4','comentario_5','1','45'),
('5','comentario_6','4','46'),
('6','comentario_7','5','46'),
('7','comentario_8','6','43'),
('8','comentario_9','6','46');

SELECT * FROM comentarios;

SELECT c.cuerpo_comentario as comentario,
u.login as usuario,
p.titulo as post 
FROM comentarios as c
JOIN usuarios as u on u.id = c.usuario_id
JOIN posts as p on p.id = c.post_id
WHERE u.id = 1;

Me gustó este reto 😊 Aquí comparto mi solución.

-- Reto 1
CREATE TABLE comentarios(
id INT PRIMARY KEY NOT NULL, 
cuerpo_comentario VARCHAR(255) NOT NULL, 
usuario_id INT NOT NULL, 
post_id INT NOT NULL);

-- Reto 2
INSERT INTO comentarios
VALUES(1, 'comentario 1', 1, 44),
(2, 'comentario 2', 1, 49),
(3, 'comentario 3', 3, 50);

-- Reto 3
SELECT * FROM comentarios;

-- Reto 4
SELECT cuerpo_comentario AS comentario,
usuarios.login AS usuario,
posts.titulo AS post 
FROM comentarios
INNER JOIN posts ON comentarios.post_id = posts.id
INNER JOIN usuarios ON comentarios.usuario_id = usuarios.id
WHERE comentarios.usuario_id = 1
LIMIT 2;

uff que tetrico, cree primero los campos como id_blabla y la validación no la pasaba

create table 'comentarios' (
  'id' integer not null,
  'cuerpo_comentario' text not null,
  'usuario_id' integer not null,
  'post_id' integer not null,
  primary key ('id')
);

insert into 'comentarios' (
  'id',
  'cuerpo_comentario',
  'usuario_id',
  'post_id')
values (
  1,'blablabla',1,62
);

insert into 'comentarios' (
  'id',
  'cuerpo_comentario',
  'usuario_id',
  'post_id')
values (
  2,'blablabla',7,56
);

insert into 'comentarios' (
  'id',
  'cuerpo_comentario',
  'usuario_id',
  'post_id')
values (
  3,'blablabla',1,44
);

select * 
from comentarios;

select co.cuerpo_comentario as comentario, u.login as usuario, po.titulo as post
from comentarios as co
  inner join usuarios as u on co.usuario_id = u.id
  inner join posts as po on co.post_id = po.id
where u.id = 1;

Me gustan los playgrounds, son una buena manera de practicar, me gusto mucho el reto, dejo acá mi solución

CREATE TABLE comentarios(
  id INT AUTO INCREMENTAL NOT NULL, 
  cuerpo_comentario TEXT, 
  usuario_id INT, 
  post_id INT,
  PRIMARY KEY (id)
);

INSERT INTO comentarios
VALUES
  (1,"test de comentario",1,43),
  (2,"Este fue un buen post",2,43),
  (3,"buen post",1,49),
  (4,"no recomiendo este post",5,50);

SELECT * FROM comentarios;

SELECT 
  cuerpo_comentario as comentario,
  usuarios.login as usuario,
  posts.titulo as post
FROM 
  comentarios
LEFT JOIN usuarios ON
  usuarios.id=comentarios.usuario_id
LEFT JOIN posts ON
  posts.id=comentarios.post_id
WHERE 
  usuarios.login="israel";

CREATE TABLE comentarios (
	id int,
	cuerpo_comentario varchar(255),
	usuario_id int,
	post_id int);

  INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
  VALUES (1,'El nuevo teléfono que se presentó en el evento tiene características únicas', 1, 43);
  INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
  VALUES (2,'Con la mejora creada el año pasado por el ingeniero japonés, estos vehículos tienen la capacidad de conducir autónomamente', 1, 48);
  INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
  VALUES (3,'La final del campeonato del mundo deleitó a los miles de asistentes al estadio y a los millones viendo la transmisión en vivo ', 5, 60);
  INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
  VALUES (4,'El equipo local en su debut ganó el partido con tres goles de diferencia', 3, 55);
  INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
  VALUES (5,'Con este nuevo descubrimiento se podrán hacer avances significativos en el area de la nanotecnología', 4, 50);

SELECT * FROM comentarios;

SELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post
FROM comentarios
INNER JOIN posts ON comentarios.post_id = posts.id
INNER JOIN usuarios ON  comentarios.usuario_id = usuarios.id
WHERE comentarios.usuario_id = 1;

Interesante aprender con este Playground ya que nos permite practicar de forma directa todo lo aprendido. Gracias Platzi.
Aquí mi solución:

--Reto 1
CREATE TABLE comentarios (
  id INT NOT NULL UNIQUE PRIMARY KEY,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INT NOT NULL,
  post_id INT NOT NULL,
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
  FOREIGN KEY (post_id) REFERENCES posts(id)
);
--Reto 2
INSERT INTO comentarios (
  id, 
  cuerpo_comentario, 
  usuario_id, 
  post_id)
VALUES 
(1, 'Comentario Hola Mundo en post', 1, 63),
(2, 'El mundial de voley es mejor que futbol', 1, 62),
(3, 'dfsjafhdosahfdsahfudashfuash', 3, 59);
--Reto 3
SELECT * FROM comentarios;
--Reto 4
SELECT 
c.cuerpo_comentario AS comentario,
u.login AS usuario,
P.titulo AS post
FROM comentarios AS c
INNER JOIN usuarios AS u
ON c.usuario_id = u.id
INNER JOIN posts AS p
ON c.post_id = p.id
WHERE usuario LIKE 'israel';

Tardé en el último reto porque estaba uniendo de manera errónea mi tabla de Posts y me arrojaba una tabla en blanco como resultado ,pero finalmente aquí está :

CREATE TABLE comentarios(

    id int unsigned not null primary key,

    comentariosDes varchar(50),

    usuario_id int,

    post_id int

);

INSERT INTO comentarios (id, ComentariosDes,usuario_id,post_id)
VALUES (1, "primer comentario", 1,43);

INSERT INTO comentarios (id, ComentariosDes,usuario_id,post_id)
VALUES (2, "segundo comentario", 1,44);

INSERT INTO comentarios (id, ComentariosDes,usuario_id,post_id)
VALUES (3, "tercero comentario", 3,45);

INSERT INTO comentarios (id, ComentariosDes,usuario_id,post_id)
VALUES (4, "cuarto comentario", 4,46);

select * from comentarios;
select * from comentarios where usuario_id=1;


select comentarios.id, comentarios.comentariosDes as CuerpoComentarios, usuarios.login as Usuario, posts.titulo
from comentarios
inner join  posts on
posts.id = comentarios.post_id
inner join usuarios on
usuarios.id = comentarios.usuario_id
where usuarios.id=1

Hola muchachos aca esta mi respuesta

<CREATE TABLE comentarios(
  id INTEGER PRIMARY KEY,
  cuerpo_comentario VARCHAR(45),
  usuario_id INTEGER,
  post_id INTEGER,
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
  FOREIGN KEY (post_id) REFERENCES posts(id)
);

INSERT INTO comentarios (
  id,
  cuerpo_comentario,
  usuario_id,
  post_id

)
VALUES ("01","ABC","1","43"),
("02","DEF","1","44"),
("03","GHI","2","45");


SELECT 
comentarios.cuerpo_comentario AS comentario,
usuarios.login AS usuario,
posts.titulo AS post

 FROM comentarios
INNER JOIN usuarios  ON comentarios.usuario_id = usuarios.id 
INNER JOIN posts on comentarios.post_id= posts.id
WHERE comentarios.usuario_id = 1;> 

Solución

<code> 
-- CREAR TABLA
CREATE TABLE comentarios (
  id INT PRIMARY KEY,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INT NOT NULL, 
  post_id INT NOT NULL,
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
  FOREIGN KEY (post_id) REFERENCES posts(id)
);

-- INSERTAR REGISTROS
INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
VALUES (1,'Cada vez la capacidad de los telefonos aumenta', 1,43);
INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
VALUES (2,'Falta que tesla apruebe la conduccion autónoma fuera de las autopistas', 2, 44);
INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
VALUES (3,'Felicidades al ganador del premio por su gran contribucion a la ciencia', 1,45);
INSERT INTO comentarios(id, cuerpo_comentario, usuario_id, post_id)
VALUES (4,'Nadie le gana a RiRi', 3, 46);

--IMPRIMIR REGISTROS
SELECT id, cuerpo_comentario, usuario_id, post_id FROM comentarios;

--imprimir solo registrOS del user 1
SELECT 
     comentarios.cuerpo_comentariO AS comentario,
     usuarios.login AS usuario,
     posts.titulo AS post
FROM (SELECT * 
      FROM comentarios 
      WHERE comentarios.usuario_id=1) 
      AS comentarios
INNER JOIN posts
  ON comentarios.post_id = posts.id
INNER JOIN usuarios
  ON usuarios.id=1;
CREATE TABLE comentarios(
  id INTEGER PRIMARY KEY UNIQUE NOT NULL ,
  cuerpo_comentario VARCHAR(255) NOT NULL,
  usuario_id INTEGER NOT NULL ,
  post_id INTEGER NOT NULL,
  FOREIGN KEY (usuario_id)
  REFERENCES usuarios(id)
  ON DELETE NO ACTION 
  ON UPDATE NO ACTION,
  FOREIGN KEY (post_id)
  REFERENCES posts(id)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION 
);
INSERT INTO comentarios(id, cuerpo_comentario, usuario_id, post_id)
VALUES(1, "Agradecido con el de arriba", 1, 43);
INSERT INTO comentarios(id, cuerpo_comentario, usuario_id, post_id)
VALUES(2, "Agradecido con el de abajo", 1, 48);
INSERT INTO comentarios(id, cuerpo_comentario, usuario_id, post_id)
VALUES(3, "Agradecido con el de al lado", 4, 57);

SELECT * FROM comentarios;

SELECT cuerpo_comentario as comentario , u.login as usuario, post_id as post
FROM  comentarios
INNER JOIN usuarios AS u ON comentarios.usuario_id = u.id
WHERE u.id = 1
;
<code> 

Mi resultado

SELECT * FROM usuarios;
SELECT * FROM categorias;
SELECT * FROM etiquetas;
SELECT * FROM posts;
SELECT * FROM posts_etiquetas;

CREATE TABLE comentarios (
  id INTEGER PRIMARY KEY NOT NULL,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INTEGER NOT NULL,
  post_id INTEGER NOT NULL
);

INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (1, "Comentario 1", 1, 43);

INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (2, "Comentario 2", 1, 43);

INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (3, "Comentario 3", 2, 50);

SELECT * FROM comentarios;

SELECT comentarios.cuerpo_comentario as comentario, usuarios.login as usuario, posts.titulo as post
FROM comentarios 
  INNER JOIN posts ON comentarios.post_id = posts.id
  INNER JOIN usuarios ON comentarios.usuario_id = usuarios.id
WHERE usuarios.id = 1
;








Logrado, aunque casi que quemo todas las neuronas de mi cerebro para logar que pasara las pruebas ._.

CREATE TABLE comentarios(
  id INT NOT NULL,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INT NOT NULL,
  post_id INT NOT NULL,
  PRIMARY KEY(id),
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
  FOREIGN KEY (post_id) REFERENCES posts(id)
);


INSERT INTO comentarios VALUES (1000, "The first comment", 1, 43);
INSERT INTO comentarios VALUES (1001, "The second comment", 1, 43);
INSERT INTO comentarios VALUES (1002, "The third comment", 2, 63);

SELECT * FROM comentarios;

SELECT 
    posts.titulo AS post,
    usuarios.login AS usuario,
    comentarios.cuerpo_comentario AS comentario
FROM comentarios
  JOIN usuarios ON comentarios.usuario_id = usuarios.id
  JOIN posts ON comentarios.post_id = posts.id
WHERE comentarios.usuario_id = 1;
;

Buen Retaso!!!

-- Tu código aquí 👇
CREATE TABLE comentarios
(
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
cuerpo_comentario TEXT NOT NULL,
usuario_id INTEGER,
post_id INTEGER,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE ON UPDATE CASCADE
);

INSERT INTO comentarios(cuerpo_comentario,usuario_id,post_id)VALUES('comentario 1',1,43);
INSERT INTO comentarios(cuerpo_comentario,usuario_id,post_id)VALUES('comentario 2',2,44);
INSERT INTO comentarios(cuerpo_comentario,usuario_id,post_id)VALUES('comentario 3',1,45);

SELECT * FROM comentarios;

SELECT cuerpo_comentario AS comentario,
 usuarios.login AS usuario,
 posts.titulo AS post
 FROM comentarios 
 INNER JOIN usuarios ON comentarios.usuario_id = usuarios.id
 INNER JOIN posts ON post_id = posts.id
 WHERE comentarios.usuario_id IS 1
;

.
.
.
.
.
.
.
.
.
.
.
.

-- Reto 1: Crear la tabla comentarios
CREATE TABLE comentarios (
  id INT PRIMARY KEY,
  cuerpo_comentario TEXT,
  usuario_id INT,
  post_id INT
);

-- Reto 2: Agregar registros
INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
VALUES
  (1, 'Comentario 1', 1, 1),
  (2, 'Comentario 2', 2, 1),
  (3, 'Comentario 3', 1, 2);

-- Reto 3: Imprimir registros
SELECT * FROM comentarios;

-- Reto 4: Imprimir registros del usuario 1 con formato
SELECT c.cuerpo_comentario AS comentario, u.login AS usuario, p.titulo AS post
FROM comentarios c
JOIN usuarios u ON c.usuario_id = u.id
LEFT JOIN posts p ON c.post_id = p.id
WHERE c.usuario_id = 1;

Aqui mi propuesta de solucion, lo habia hecho con alias pero no salia entonces imagine que estaba teniendo problemas por esa parte PERO NOO, jajaj el problema es que los post id empiezan desde 43 entonces debes insertar esos valores en la tabla comentarios para que tus joins funcionen
aqui mi codigo

Solución estrictamente correcta!!! 😊😎😊 Mucho cuidado al hacer los JOINs, ya que pueden arrojar información incorrecta y el Playground pasártela como buena. 🙃 No olviden verificar el diagrama físico de la base de datos antes de hacer cualquier JOIN para validar quién le asigna la llave foránea a quién. 😉


-- Reto 1:
CREATE TABLE comentarios (
  id INT NOT NULL,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INT NOT NULL,
  post_id INT NOT NULL,
  PRIMARY KEY (id),
  CONSTRAINT comentarios_post
    FOREIGN KEY (post_id)
    REFERENCES posts (id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT comentarios_usuario
    FOREIGN KEY (usuario_id)
    REFERENCES usuarios (id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

-- Reto 2:
INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (1,'Comentario 1, hecho por el usuario 2', 2, 43);

INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (2,'Comentario 2, hecho por el usuario 3', 3, 44);

INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (3,'Comentario 3, hecho por el usuario 1', 1, 45);

INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (4,'Comentario 4, hecho por el usuario 1', 1, 46);

-- Reto 3:
SELECT *
FROM comentarios;

-- Reto 4:
SELECT 
comentarios.cuerpo_comentario AS comentario,
usuarios.login AS usuario,
posts.titulo AS post
FROM comentarios    
  INNER JOIN posts ON posts.id = comentarios.post_id
	INNER JOIN usuarios ON usuarios.id = comentarios.usuario_id
WHERE comentarios.usuario_id = 1;

Al momento de correr el query en mi portátil me sale bien el ejercicio, pero aquí me sale error muchas veces, sin embargo, pude conseguirlo;

-- Tu código aquí 👇
CREATE TABLE comentarios (
  id INTEGER PRIMARY KEY,
  cuerpo_comentario VARCHAR(255) NOT NULL,
  usuario_id INT NOT NULL,
  post_id INT NOT NULL,
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
  FOREIGN KEY (post_id) REFERENCES posts(id)
);

INSERT INTO comentarios (cuerpo_comentario, usuario_id, post_id) VALUES
('Me gustó mucho este post', 1, 1),
('Muy interesante el tema', 2, 1),
('No estoy de acuerdo con lo que dices', 3, 2),
('Gracias por compartir tu opinión', 1, 2),
('Excelente artículo', 4, 3);

SELECT * FROM comentarios;

SELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post
FROM comentarios
INNER JOIN usuarios ON comentarios.usuario_id = usuarios.id
INNER JOIN posts ON comentarios.post_id = posts.id
WHERE comentarios.usuario_id = 1;

Que buen reto, la verdad me sentía bastante inseguro con tantas cosas que hemos visto hasta ahora, pero ver que pude resolver esto por mi cuenta fue hermoso 🥹

Use un poco de ayuda del workbench para crear la tabla, pero creo que es natural porque fue como más lo hicimos en clases pasadas. Y gasté dos intentos en ver que querían que enumerara los comentarios, no los posts del usuario… Pero se logró.

.
.
.
.
.
.
.
.
.
.
.

Acá mi solución!

-- Tu código aquí 👇

CREATE TABLE comentarios (
  id INTEGER NOT NULL PRIMARY KEY,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id INT NOT NULL,
  post_id INT NOT NULL
);

INSERT INTO comentarios VALUES (1, "ASDFASDF", 1, 2), (2, "ASasdasDFASDF", 1, 2), (3, "ASDFASqwefasdfDF", 3, 2);

SELECT * FROM comentarios;

SELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post
FROM comentarios
  INNER JOIN posts ON posts.usuario_id = comentarios.usuario_id
  INNER JOIN usuarios ON usuarios.id = comentarios.usuario_id
WHERE comentarios.usuario_id = 1
GROUP BY comentario;

P.S. Sí, sé que no definí las clases foraneas, pero creo que no era algo tan estricto aquí si igual tenía que crear de manera manual los comentarios 😛

Costó pero se pudo : )

> **RETO 1**
CREATE TABLE comentarios (
  id INTEGER auto_increment NOT NULL,
  cuerpo_comentario VARCHAR(255) NOT NULL, 
  usuario_id INTEGER NOT NULL,
  post_id INTEGER NOT NULL,
  PRIMARY KEY (id),
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
  FOREIGN KEY (post_id) REFERENCES posts(id)
);

> **RETO 2**
INSERT INTO comentarios 
(id, cuerpo_comentario, usuario_id,	post_id)
VALUES (1, 'Se lo meressi', 1,	45), (2, 'me gusta mucho', 1, 43), (3, 'muy normal', 4, 43);
 
> **RETO 3**
SELECT * FROM comentarios;

> **RETO 4**
SELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario, 
posts.titulo AS post
FROM comentarios
INNER JOIN posts ON posts.id = comentarios.post_id
INNER JOIN usuarios ON usuarios.id = comentarios.usuario_id
WHERE usuarios.id = 1

undefined