Vous êtes sur la page 1sur 14

SQL

Consultas SQL Parte 2


Combinando datos de varias tablas

Prof. Edwuard Castaeda

Consultas sobre varias tablas


Persona

Marca

codigo nombre apellido sexo


1
2
3
4
5

Pedro
Ana
Jos
Mara
Jess

Lpez
Gmez
Lezama
Contreras
Prez

M
F
M
F
M

codigo

descrip

status

Toyota
Fiat
Peugeot

1
1
2

2
3

Modelo

Vehculo
codigo cod_modelo

placa

anho

color

AND400

2010

FGH768

2005

APG299

1987

CEA291

1990

DON016

2016

codigo

descrip

cod_marca

Corolla
4Runner
Palio
500X
Land Cruiser

1
1
2
2
1

2
3
4
5

Consultas sobre varias tablas


Alquiler
codigo

cod_persona

cod_vehiculo

fecha_alquiler

status_alq

observ

1
2
3
5
7
1
7
2
3
5
1

1
2
5
2
5
1
2
5
2
5
1

2016-01-29
2015-12-30
2016-04-25
2016-05-25
2016-05-28
2015-08-29
2015-11-03
2016-04-21
2016-05-25
2016-03-21
2016-05-25

2
2
2
1
1
2
2
2
1
2
2

Faro roto
Carro sucio

2
3
4
5
6
7
8
9
10
11

Faro roto
Carro sucio

Ejemplo 1
Consultar los modelos de vehculos registrados con su
marca
SELECT modelo.codigo, modelo.descrip as modelo,
marca.descrip as marca
FROM modelo, marca
WHERE modelo.cod_marca = marca.codigo
Resultado
codigo

modelo

marca

Corolla
4Runner
Palio
500X
Land Cruiser

Toyota
Toyota
Fiat
Fiat
Toyota

2
3
4
5

Ejemplo 2
Consultar los vehculos registrados con su modelo
SELECT vehiculo.codigo, modelo.descrip as modelo,
placa, anho
FROM vehiculo, modelo
WHERE vehiculo.cod_modelo = modelo.codigo
Resultado
codigo

modelo

placa

anho

Corolla

AND400

2010

4Runner

FGH768

2005

Palio

APG299

1987

4Runner

CEA291

1990

Corolla

DON016

2016

Ejemplo 3
Consultar los vehculos registrados con su modelo,
utilizando alias para tablas
SELECT v.codigo, m.descrip as modelo,
placa, anho
FROM vehiculo v, modelo m
WHERE v.cod_modelo = m.codigo

Resultado
codigo

modelo

placa

anho

Corolla

AND400

2010

4Runner

FGH768

2005

Palio

APG299

1987

4Runner

CEA291

1990

Corolla

DON016

2016

Ejemplo 4
Consultar los vehculos registrados con su modelo,
marca, utilizando alias para tablas
SELECT v.codigo, ma.descrip as marca, mo.descrip as
modelo, placa, anho
FROM vehiculo v, modelo mo, marca ma
WHERE v.cod_modelo = mo.codigo and
mo.cod_marca = ma.codigo

Resultado
codigo

marca

modelo

placa

anho

Toyota

Corolla

AND400

2010

Toyota

4Runner

FGH768

2005

Fiat

Palio

APG299

1987

Toyota

4Runner

CEA291

1990

Toyota

Corolla

DON016

2016

Ejemplo 5
Consultar los vehculos registrados con su modelo,
marca, utilizando alias para tablas y la opcin INNER
JOIN
SELECT v.codigo, ma.descrip as marca, mo.descrip as modelo, placa,
anho
FROM vehiculo v
INNER JOIN modelo mo ON (v.cod_modelo = mo.codigo)
INNER JOIN marca ma ON (mo.cod_marca = ma.codigo)

Ejemplo 6
Consultar los vehculos alquilados en el mes de mayo del
ao 2016. El reporte debe indicar marca, modelo, placa,
nombre y apellido del cliente, fecha y observaciones de
alquiler.
SELECT ma.descrip as marca, mo.descrip as modelo, placa,
p.nombre, p.apellido, a.fecha_alquiler, a.observ
FROM alquiler a
INNER JOIN persona p ON (a.cod_persona = p.codigo)
INNER JOIN vehiculo v ON (a.cod_vehiculo = v.codigo)
INNER JOIN modelo mo ON (v.cod_modelo = mo.codigo)
INNER JOIN marca ma ON (mo.cod_marca = ma.codigo)
WHERE a.fecha_alquiler BETWEEN 2016-05-01 and 2016-05-31

Ejemplo 7
Consultar la cantidad de alquileres registrados por persona
SELECT p.nombre || ' ' || p.apellido as persona, count (a.*) as cantidad
FROM alquiler a
INNER JOIN persona p ON (a.cod_persona = p.codigo)
GROUP BY p.nombre || ' ' || p.apellido

Ejemplo 8
Consultar la cantidad de alquileres registrados por vehculo
SELECT v.placa, count (a.*)
FROM alquiler a
INNER JOIN vehiculo v ON (a.cod_vehiculo = v.codigo)
GROUP BY v.placa

SELECT mo.descrip as modelo, count (a.*)


FROM alquiler a
INNER JOIN vehiculo v ON (a.cod_vehiculo = v.codigo)
INNER JOIN modelo mo ON (v.cod_modelo = mo.codigo)
GROUP BY mo.descrip

Ejemplo 9
Consultar la cantidad de alquileres registrados por vehculo
mostrando aquellos modelos que tengan alquileres por
debajo de 5
SELECT mo.descrip as modelo, count (a.*) as cantidad
FROM alquiler a
INNER JOIN vehiculo v ON (a.cod_vehiculo = v.codigo)
INNER JOIN modelo mo ON (v.cod_modelo = mo.codigo)
GROUP BY mo.descrip
HAVING count (a.*) < 5

Ejemplo 10
Consultar los modelos de vehculos para los cuales, no se
han registrado alquileres
SELECT mo.descrip as modelo, v.placa, v.anho
FROM vehiculo v
INNER JOIN modelo mo ON (v.cod_modelo = mo.codigo)
WHERE v.codigo
NOT IN (
SELECT distinct(a.cod_vehiculo)
FROM alquiler a
)

Mxima

Vous aimerez peut-être aussi