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

Instalaci贸n local de un RDBMS (Windows)

14

驴Qu茅 es RDB y RDBMS?

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 107

Preguntas 9

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Soluci贸n鈥 馃槃
.
Tiene bugs este reto 馃槄.
.
NOTA:

  • Reto 2: En la descripci贸n del reto se pide agregar 2 tuplas pertenezcan al 鈥渦suario_id鈥 43, pero este no existe en la tabla 鈥渦suarios鈥.
    .
  • Reto 2: Para que las pruebas pasen bien se tiene que poner el n煤mero 43 en el lugar del 鈥減ost_id鈥 y adem谩s el 鈥渦ser_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 鈥渃omentarios.usuario_id = 1鈥 o el 鈥渃omentarios.post_id = 43鈥, aunque lo ideal ser铆a 鈥渃omentarios.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;

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

Media hora sin entender por qu茅 me tiraba error la consulta, resulta que hab铆a escrito 鈥淔OREING鈥 en vez de 鈥淔OREIGN鈥,
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?
```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;
麓麓麓麓 \--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

No se si fui el 煤nico chistoso pero me confundi y puse en el id de los post 1, 2, 3 y pues como no existen esos post pues claro no me sal铆a nada luego med铆 cuenta que no eran los id jajaja

ya uno no sabe que es mas tonto si olvidar un ; o esto jaja

Muy buen reto, me encanta poner en pr谩ctica lo aprendido en las clases anteriores!

Aqu铆 mi soluci贸n:

-- 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 not null,
  cuerpo_comentario varchar(255),
  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)
  );

insert into comentarios (id, cuerpo_comentario, usuario_id, post_id)

values 
(1, "Este es mi primer comentario", 1, 43),
(2, "Este es mi segundo comentario", 1, 43),
(3, "Este es el tercer comentario", 3, 50);

SELECT * from comentarios;

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;

Necesitamos m谩s ejercicios como estos para lograr superar nuestros limites 馃挌

-- Reto 1
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)
  FOREIGN KEY (post_id) REFERENCES posts(id)
);

-- Reto 2
INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
VALUES (1, "abc", 1, 52),
(2, "cba", 3, 43),
(3, "xyz", 1, 46);

-- 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 p.id = c.post_id
INNER JOIN usuarios AS u ON u.id = c.usuario_id
WHERE c.usuario_id =1;

me demor茅 un mont贸n, pero de que estuvo bueno, estuvo bueno

Estuvo para pensar

Hay que seguir practicando鈥

Ahora reci茅n comienzan los verdaderos retos

Gracias Platzi

Como buena pr谩ctica, es altamente recomendable indentar todo el c贸digo y utilizar alias tanto para los nombres de las columnas como para las tablas. Esto ayuda sobre todo al orden y la comprensi贸n del c贸digo.

I鈥檓 happy XD


-- Reto 1: crear la tabla
create table comentarios(
  id int not null PRIMARY KEY,
  cuerpo_comentario TEXT null,
  usuario_id int not null,
  post_id int not null
);
-- Reto 2: agrega registros
INSERT INTO comentarios 
(id, cuerpo_comentario, usuario_id, post_id)
VALUES
  (1,'Primer comentario', 1, 43),
  (2,'Segundo comentario', 1, 44),
  (3,'Tercer comentario', 2, 45);
-- Reto 3: imprime registros
SELECT * from comentarios;
-- Reto 4: imprime registros del usuario 1
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;

De mi lado:

CREATE TABLE "comentarios" (
  id INT NOT NULL,
  cuerpo_comentario VARCHAR(10),
  usuario_id VARCHAR(10),
  post_id VARCHAR(10)
);

INSERT INTO comentarios (
  id, cuerpo_comentario, usuario_id,post_id
)
VALUES
(1,"comentario1",2,54),
(2,"comentario2",1,43),
(3,"comentario3",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 usuarios AS U ON C.usuario_id=U.id
INNER JOIN posts AS P ON C.post_id=P.id
WHERE U.id=1;

Este fue mi reto y me daba error, pero me salio lo que pedian,no? jajaj:

-- Tu c贸digo aqu铆 馃憞
SELECT * FROM usuarios;
SELECT * FROM categorias;
SELECT * FROM etiquetas;
SELECT * FROM posts;
SELECT * FROM posts_etiquetas;

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,"EXCELENTE POST",1,54)
,(4,"Excelenete",1,43)
,(3,"DEBERIAMOS HACER ESTO",3,43);

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;

Resuelto

<code>
 create table comentarios(
id int primary key not null,
cuerpo_comentario text,
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(id,cuerpo_comentario,usuario_id,post_id)
values(1,"excelente aporte",2,43),(2,"buen comentario",1,44),(3,"pesimo comentario",3,45),(4,"sin comentarios",1,46);

select *
from comentarios;

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;


Comparto el c贸digo:

-- Reto 1
CREATE TABLE comentarios (
  id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
  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, "Este el primer comentario", 6, 3),
(2, "Este el segundo comentario", 1, 2),
(3, "Este el tercero comentario", 1, 5),
(4, "Este el cuarto comentario", 3, 2);

-- 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 posts ON posts.id = comentarios.post_id
LEFT JOIN usuarios ON comentarios.usuario_id = usuarios.id
WHERE comentarios.usuario_id = 1;

Un buen reto. 馃憣

.

Comporta mi Soluci贸n 馃憞


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 ("Que gran curso", 1, 43),
  ("Estupendo post", 1, 44),
  ("Estoy deacuerdo",2, 45),
  ("Creo que se deberia profundizar", 3, 46),
  ("No estoy deacuerdo", 4, 47)
;

SELECT *
 FROM comentarios;

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;
-- Tu c贸digo aqu铆 馃憞
CREATE TABLE comentarios(
  id int AUTO_INCREMENT,
  cuerpo_comentario TEXT NOT NULL,
  usuario_id int,
  post_id int,
  primary key(id),
  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,
   'Que buen Poust',
    1,
    43
 );

INSERT INTO  comentarios(
    id,
    cuerpo_comentario,
    usuario_id,
    post_id
 )
 VALUES(
    2,
   'Asu que pajaa',
    2,
    43
 );

INSERT INTO  comentarios(
    id,
    cuerpo_comentario,
    usuario_id,
    post_id
 )
 VALUES(
    3,
   'No me gusto',
    3,
    43
 );

INSERT INTO  comentarios(
    id,
    cuerpo_comentario,
    usuario_id,
    post_id
 )
 VALUES(
    4,
   'primer comentario xd',
    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
;

馃榾Buen铆simo este reto!
Por ac谩 dejo mi soluci贸n:
.
.
.
.
.
.
.


CREATE table comentarios(
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  cuerpo_comentario text,
  usuario_id INTEGER,
  post_id INTEGER
);

INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (1, "Me gusta este blog", 1, 48);
INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (2, "驴Est谩n seguros de esta informaci贸n?", 1, 49);
INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id) VALUES (3, "No lo puedo creer :O", 3, 48);

SELECT *
FROM comentarios;

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

Comparto mi resultado.

-- Tu c贸digo aqu铆 馃憞

CREATE TABLE comentarios (id INT PRIMARY KEY NOT NULL,
cuerpo_comentario VARCHAR(400) 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 VALUES (1 , 'Primero', 1, 60 ),
(2 , 'Segundo', 1, 59 ),
(3 , 'Tercero', 5, 55 );

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 c.usuario_id = u.id
AND c.post_id = p.id
AND u.id = 1;

Esta es mi soluci贸n al reto:

-- Tu c贸digo aqu铆 馃憞
-- Reto 1 
CREATE TABLE comentarios (
    id INT,
    cuerpo_comentario VARCHAR(255),
    usuario_id INT,
    post_id INT
);

-- Reto 2:
INSERT INTO comentarios (id, cuerpo_comentario, usuario_id, post_id)
VALUES 
    (1, '隆Gran art铆culo!', 1, 2),
    (2, 'Excelente informaci贸n', 1, 3),
    (3, 'Me gustar铆a saber m谩s al respecto', 2, 4),
    (4, 'Excelente post', 3, 5),
    (5, 'Excelente trabajo', 4, 6);

-- Reto 3 
SELECT * FROM comentarios;

-- Reto 4
SELECT c.cuerpo_comentario as comentario, u.login as usuario, posts.titulo as post
FROM comentarios AS c 
  LEFT JOIN usuarios as U ON c.usuario_id = u.id
  LEFT JOIN posts ON c.post_id = posts.id
  WHERE u.id = 1;
-- Mi solucion 
CREATE TABLE comentarios (
    id INT 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 (id, cuerpo_comentario, usuario_id, post_id)
values
	(1, "Que buen aporte", 1, 2),
    (2, "Exelente trabajo", 1, 43),
    (3, "Puede mejorar", 2, 43);
    
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 c.post_id = p.id
WHERE
    u.id = 1;
    

Wuuu !! Completed , superrr poder aplicarlo aprendido , que voltaje !!
.
.
.
.
.
.
.
.
.
.
.
.

Que buena prueba

recopila lo visto anteriormente 馃槂

.

.

.

Me gener贸 algunos inconvenientes para poder resolverlo pero al final lo logr茅, pero con este ejercicio me di cuenta que debo practicar m谩s usando solo c贸digo y no todo por medio del cliente gr谩fico ya que no siempre se va a contar con esa interfaz que facilita y ahorra bastante el trabajo.

Algo que me pas贸 (no si alguien m谩s pas贸 por lo mismo) pero en el 煤ltimo reto solo se me creaba la tabla pero no el contenido por lo que pens茅 que algo hab铆a de malo en mi c贸digo, as铆 que me fui a hacerlo tambi茅n en mi base de datos y si corria bien todo , as铆 que regres茅 al navegador para correr las pruebas y todo sali贸 con 茅xito.

les comparto mi soluci贸n

CREATE TABLE comentarios(
  id INTEGER NOT NULL,
  cuerpo_comentario TEXT,
  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)
);

INSERT INTO comentarios(id,cuerpo_comentario,usuario_id,post_id)
VALUES (1,"Los pollos amarillos",1,1),
  (2,"Los gatos negros",2,2),
  (3,"Los perros marrones",1,3),
  (4,"La cometa no vuela",3,4);

SELECT * FROM comentarios;

SELECT comentarios.cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post
FROM comentarios
  LEFT JOIN posts ON posts.id = comentarios.post_id
  LEFT JOIN usuarios ON usuarios.id = comentarios.usuario_id
WHERE comentarios.usuario_id = 1;
-- 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)
);

-- 2
INSERT INTO comentarios(id, cuerpo_comentario, usuario_id, post_id ) VALUES
(1, 'Hola_Mundo', 1, 1),
(2, 'Aprendiendo SQL en platzi', 1, 2),
(3, 'Ejercicio de SQL', 3, 8);

-- 3
SELECT * FROM comentarios;

--4
SELECT cuerpo_comentario AS comentario, usuarios.login AS usuario, posts.titulo AS post
 FROM comentarios
LEFT JOIN posts ON posts.id = comentarios.post_id
LEFT JOIN usuarios ON usuarios.id = comentarios.usuario_id
WHERE usuarios.id = 1;
CREATE TABLE comentarios(
  id INTEGER 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)
);

INSERT INTO comentarios(id, cuerpo_comentario, usuario_id, post_id)
VALUES (1, "Hola, soy el mejor", 1, 63),
(2, "Me gusta cantar", 4, 61),
(3, "Soy mejor en Python que en html", 1, 60);
SELECT * FROM comentarios;

SELECT *
FROM comentarios
WHERE id = 1;
SELECT comentario.cuerpo_comentario AS comentario,
usuarios.login AS usuario,
posts.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_id = 1;

Hice todo mi reto y no me permit铆a crear la tabla, aunque estaba muy bien, creo que tuvo un problema

undefined