Documento de Relaciones, Consultas y
Subconsultas en Visual FoxPro
1. Relación de tablas y campos
Proyecto: Fila Par o Impar
Base de Datos: Par_2T2
Tabla 1: Película
ID_Pelicula: Tipo Entero, Índice primario, Tamaño: 4
Nombre: Tipo Caracter, Tamaño: 50
Año: Tipo Entero, Tamaño: 4
Género: Tipo Caracter, Tamaño: 30
Tabla 2: Actor
ID_Actor: Tipo Entero, Índice primario, Tamaño: 4
Nombre: Tipo Caracter, Tamaño: 50
Fecha_Nacimiento: Tipo Fecha
Nacionalidad: Tipo Caracter, Tamaño: 30
Tabla auxiliar: Pelicula_Actor
ID_Pelicula: Tipo Entero, Índice, Tamaño: 4
ID_Actor: Tipo Entero, Índice, Tamaño: 4
2. Consultas y Subconsultas
Consulta 1: Mostrar todos los actores y las películas en las que han trabajado.
SELECT Actor.Nombre, Pelicula.Nombre
FROM Actor
JOIN Pelicula_Actor ON Actor.ID_Actor = Pelicula_Actor.ID_Actor
JOIN Pelicula ON Pelicula.ID_Pelicula = Pelicula_Actor.ID_Pelicula
Consulta 2: Mostrar las películas estrenadas después del año 2000.
SELECT Nombre, Año
FROM Pelicula
WHERE Año > 2000
Consulta 3: Listar los actores que han trabajado en más de una película.
SELECT Actor.Nombre, COUNT(Pelicula_Actor.ID_Pelicula) AS Numero_Peliculas
FROM Actor
JOIN Pelicula_Actor ON Actor.ID_Actor = Pelicula_Actor.ID_Actor
GROUP BY Actor.Nombre
HAVING COUNT(Pelicula_Actor.ID_Pelicula) > 1
Consulta 4: Mostrar las películas de un género específico (por ejemplo,
"Acción").
SELECT Nombre
FROM Pelicula
WHERE Género = 'Acción'
Consulta 5: Listar los actores que tienen más de 40 años.
SELECT Nombre, Fecha_Nacimiento
FROM Actor
WHERE YEAR(DATE()) - YEAR(Fecha_Nacimiento) > 40
Subconsulta 1: Mostrar el actor más joven que ha participado en una película.
SELECT Nombre
FROM Actor
WHERE Fecha_Nacimiento = (SELECT MAX(Fecha_Nacimiento) FROM Actor)
Subconsulta 2: Listar las películas con más de dos actores.
SELECT Nombre
FROM Pelicula
WHERE ID_Pelicula IN (
SELECT ID_Pelicula
FROM Pelicula_Actor
GROUP BY ID_Pelicula
HAVING COUNT(ID_Actor) > 2
)
Subconsulta 3: Mostrar los actores que no han participado en ninguna película.
SELECT Nombre
FROM Actor
WHERE ID_Actor NOT IN (SELECT ID_Actor FROM Pelicula_Actor)
Subconsulta 4: Mostrar las películas que no tienen actores asociados.
SELECT Nombre
FROM Pelicula
WHERE ID_Pelicula NOT IN (SELECT ID_Pelicula FROM Pelicula_Actor)
Subconsulta 5: Mostrar el actor que ha trabajado en más películas.
SELECT Nombre
FROM Actor
WHERE ID_Actor = (
SELECT ID_Actor FROM Pelicula_Actor
GROUP BY ID_Actor
ORDER BY COUNT(ID_Pelicula) DESC LIMIT 1
)