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= 鈥淟inea 1鈥
),
(
SELECT estaciones.id
FROM estaciones
WHERE estaciones.nombre= 鈥淓stacion 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