No tienes acceso a esta clase

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

Playground: Metro de Bogotá en SQL

23/34

Aportes 9

Preguntas 1

Ordenar por:

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

o inicia sesión.

Después de tanto intentar, he aquí mi resultado:

CREATE TABLE linea_estaciones (
id BIGINT (20),

linea_id BIGINT (20) NOT NULL,
estacion_id BIGINT (20),

create_at TIMESTAMP,
update_at TIMESTAMP,

PRIMARY KEY (id)
CONSTRAINT linea_estaciones_linea_id_foreign
FOREIGN KEY (linea_id) REFERENCES linea (id),

CONSTRAINT linea_estaciones_estacion_id_foreign
FOREIGN KEY (estacion_id) REFERENCES estaciones (id)
);

INSERT INTO linea_estaciones (id, linea_id, estacion_id) VALUES
(1, 1, 2),
(2, 1, 11),
(3, 1, 8),
(4, 1, 5),
(5, 1, 4),
(6, 2, 3),
(7, 2, 1),
(8, 2, 7),
(9, 2, 10),
(10, 2, 14),
(11, 3, 6),
(12, 3, 9),
(13, 3, 13),
(14, 3, 15),
(15, 3, 12);

INSERT INTO linea_estaciones (linea_id, estacion_id) VALUES
(
5,
(
SELECT lineas.id
FROM lineas
WHERE lineas.nombre= “Linea 1”
),
(
SELECT estaciones.id
FROM estaciones
WHERE estaciones.nombre= “Estacion 2”
)
);

Aquí mi solución. Por alguna razón el editor no acepta las palabras reservadas UNSIGNED y AUTO_INCREMENT, así que inserté el ID manualmente.

-- CREACIÓN DE LA TABLA PIVOTE
CREATE TABLE `linea_estaciones` (
  `id` BIGINT(20) NOT NULL,
  `linea_id` BIGINT(20) NOT NULL,
  `estacion_id` BIGINT(20) NOT NULL,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  CONSTRAINT `linea_estaciones_linea_id_foreign`
  FOREIGN KEY (`linea_id`) REFERENCES `lineas` (`id`),
  CONSTRAINT `linea_estaciones_estacion_id_foreign`
  FOREIGN KEY (`estacion_id`) REFERENCES `estaciones` (`id`)
);

-- INSERTAR 5 ESTACIONES PARA LA LÍNEA 1
INSERT INTO `linea_estaciones` (id, linea_id, estacion_id) VALUES
(1, 1, 15),
(2, 1, 9),
(3, 1, 2),
(4, 1, 7),

-- INSERTAR REGISTRO CON CONSULTA ANIDADA
(
  5,
  (
    SELECT `id`
    FROM `lineas`
    WHERE `color` = "Amarillo"
  ),
  (
    SELECT `id`
    FROM `estaciones`
    WHERE `inaguracion` = "2026-07-15"
  )
);

-- INSERTAR 5 ESTACIONES PARA LA LÍNEA 2
INSERT INTO `linea_estaciones` (id, linea_id, estacion_id) VALUES
(6, 2, 5),
(7, 2, 1),
(8, 2, 12),
(9, 2, 14),
(10, 2, 3);

-- INSERTAR 5 ESTACIONES PARA LA LÍNEA 3
INSERT INTO `linea_estaciones` (id, linea_id, estacion_id) VALUES
(11, 3, 15),
(12, 3, 10),
(13, 3, 9),
(14, 3, 7),
(15, 3, 6);

SELECT * FROM `linea_estaciones`;


. . . . . . . . . . . . \-- Crear la tabla linea\_estaciones CREATE TABLE linea\_estaciones ( linea\_id INT, estacion\_id INT, PRIMARY KEY (linea\_id, estacion\_id), FOREIGN KEY (linea\_id) REFERENCES lineas(id), FOREIGN KEY (estacion\_id) REFERENCES estaciones(id) ); \-- Asegúrate de que cada línea tenga al menos 5 estaciones. \-- Puedes ajustar estas asignaciones según tus necesidades. \-- Línea 1 - Asignar estaciones 1 a 5 INSERT INTO linea\_estaciones (linea\_id, estacion\_id) SELECT 1, id FROM estaciones WHERE id BETWEEN 1 AND 5; \-- Línea 2 - Asignar estaciones 6 a 10 INSERT INTO linea\_estaciones (linea\_id, estacion\_id) SELECT 2, id FROM estaciones WHERE id BETWEEN 6 AND 10; \-- Línea 3 - Asignar estaciones 11 a 15 INSERT INTO linea\_estaciones (linea\_id, estacion\_id) SELECT 3, id FROM estaciones WHERE id BETWEEN 11 AND 15; \-- Línea 4 - Asignar estaciones 16 a 20 INSERT INTO linea\_estaciones (linea\_id, estacion\_id) SELECT 4, id FROM estaciones WHERE id BETWEEN 16 AND 20; \-- Línea 5 - Asignar estaciones 21 a 25 INSERT INTO linea\_estaciones (linea\_id, estacion\_id) SELECT 5, id FROM estaciones WHERE id BETWEEN 21 AND 25; \-- Línea 6 - Asignar estaciones 26 a 30 INSERT INTO linea\_estaciones (linea\_id, estacion\_id) SELECT 6, id FROM estaciones WHERE id BETWEEN 26 AND 30;

Por alguna razón, no me aceptó los comandos NOT NULL ni los constraint asi que tiene que ser bastante simple la creación de la tabla, esta fue mi solución después de tanto:

<CREATE TABLE linea_estaciones (
 linea_id INT,
 estacion_id INT,
 FOREIGN KEY (linea_id) REFERENCES linea (id),
 FOREIGN KEY (estacion_id) REFERENCES estaciones (id)
);

INSERT INTO linea_estaciones (linea_id, estacion_id)
VALUES 
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 1"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 1"
  )
),
(
 (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 1"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 2"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 1"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 3"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 1"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 4"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 1"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 5"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 2"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 6"
  )
),
(
 (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 2"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 7"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 2"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 8"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 2"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 9"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 2"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 10"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 3"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 1"
  )
),
(
 (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 3"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 2"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 3"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 3"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 3"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 4"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 3"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 5"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 4"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 6"
  )
),
(
 (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 4"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 7"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 4"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 8"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 4"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 9"
  )
),
(
  (
    SELECT lineas.id
    FROM lineas
    WHERE lineas.nombre = "Linea 4"
  ),
  (
    SELECT estaciones.id
    FROM estaciones
    WHERE estaciones.nombre = "Estación 10"
  )
);> 
-- Tu código aquí 👇
-- Crear la tabla pivote linea_estaciones
CREATE TABLE linea_estaciones (
  linea_id INT,
  estacion_id INT,
  FOREIGN KEY (linea_id) REFERENCES lineas(id),
  FOREIGN KEY (estacion_id) REFERENCES estaciones(id)
);

-- Agregar relaciones entre estaciones y líneas
INSERT INTO linea_estaciones (linea_id, estacion_id) VALUES
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 1"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 1")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 1"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 2")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 1"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 3")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 1"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 4")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 1"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 5")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 2"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 6")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 2"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 7")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 2"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 8")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 2"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 9")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 2"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 10")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 3"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 11")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 3"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 12")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 3"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 13")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 3"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 14")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 3"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 15"))
;

el código está insertando manualmente relaciones entre las líneas y las estaciones en la tabla pivote linea_estaciones utilizando subconsultas para obtener los IDs de las tablas lineas y estaciones según los nombres especificados. Esto asegura que cada línea tenga al menos 5 estaciones conectadas. Sin embargo, este enfoque puede ser poco escalable si hay muchas líneas y estaciones, ya que se requiere una inserción manual para cada combinación.

Si se pudo 🥳🥳🥳🥳

-- Tu código aquí 👇
-- SELECT * FROM lineas;
-- SELECT * FROM estaciones;

CREATE TABLE linea_estaciones(
  linea_id BIGIBT(20) NOT NULL,
  estacion_id BIGIBT(20) NOT NULL,
  CONSTRAINT `linea_estaciones_linea_id_foreign`
  FOREIGN KEY (`linea_id`) REFERENCES `lineas` (`id`),
  CONSTRAINT `linea_estaciones_estacion_id_foreign`
  FOREIGN KEY (`estacion_id`) REFERENCES `estaciones` (`id`)
);

INSERT INTO linea_estaciones (linea_id, estacion_id) VALUES
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 1"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 1")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 1"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 2")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 1"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 3")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 1"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 4")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 1"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 5")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 2"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 6")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 2"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 7")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 2"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 8")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 2"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 9")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 2"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 10")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 3"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 11")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 3"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 12")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 3"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 13")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 3"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 14")),
((SELECT lineas.id FROM lineas WHERE lineas.nombre= "Linea 3"),
(SELECT estaciones.id FROM estaciones WHERE estaciones.nombre= "Estacion 15"))
;

Y haciendo la sucia:

-- Tu código aquí 👇
-- SELECT * FROM lineas;
-- SELECT * FROM estaciones;

CREATE TABLE linea_estaciones(
  linea_id BIGIBT(20) NOT NULL,
  estacion_id BIGIBT(20) NOT NULL,
  CONSTRAINT `linea_estaciones_linea_id_foreign`
  FOREIGN KEY (`linea_id`) REFERENCES `lineas` (`id`),
  CONSTRAINT `linea_estaciones_estacion_id_foreign`
  FOREIGN KEY (`estacion_id`) REFERENCES `estaciones` (`id`)
);

INSERT INTO linea_estaciones(linea_id, estacion_id) VALUES
(1,1),
(1,2),
(1,3),
(1,4),
(1,5),
(2,6),
(2,7),
(2,8),
(2,9),
(2,10),
(3,11),
(3,12),
(3,13),
(3,14),
(3,15); 

SELECT * FROM lineas;
SELECT * FROM estaciones;

CREATE TABLE lineas_estaciones (
id BIGINT (20) NOT NULL,
linea_id BIGINT (20) NOT NULL,
estacion_id BIGINT (20) NOT NULL,
create_atTIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_atTIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (id),
CONSTRAINT lineas_estaciones_linea_id_foreign FOREIGN KEY (linea_id) REFERENCES lineas (id),
CONSTRAINT estaciones_lineas_estacion_id_foreign FOREIGN KEY (estacion_id) REFERENCES estaciones (id)
);

Seria metro de Medellín, ya que Bogotá no tiene todavía

Usar solo si te rindes:

CREATE TABLE linea_estaciones (
linea_id BIGINT(20) UNSIGNED NOT NULL,
estacion_id BIGINT(20) UNSIGNED NOT NULL,
PRIMARY KEY (linea_id, estacion_id),
FOREIGN KEY (linea_id) REFERENCES lineas (id),
FOREIGN KEY (estacion_id) REFERENCES estaciones (id)
);

INSERT INTO linea_estaciones (linea_id, estacion_id) VALUES
(1, 1),
(1, 2),
(1, 3),
(1, 4),
(1, 5);

undefined