jueves, 17 de marzo de 2011

Soluciones T05



 T05.001- Número de pedido e identificador, apellidos y nombre del usuario que realiza el pedido (usando join).
select numpedido,usuario,apellidos,nombre
from pedido join usuario on (usuario=email)
order by apellidos,nombre;

T05.002- Número de pedido e identificador, apellidos y nombre del usuario que realiza el pedido, y nombre de la localidad del usuario (usando join).
select numpedido,usuario,apellidos,u.nombre,l.pueblo
from pedido
join usuario u on (usuario=email)
join localidad l on (l.codm=u.pueblo and l.provincia=u.provincia)
order by apellidos,u.nombre;

T05.003- Número de pedido e identificador, apellidos y nombre del usuario que realiza el pedido, nombre de la localidad y nombre de la provincia del usuario (usando join).
select numpedido, usuario, u1.apellidos, u1.nombre, p1.nombre
from usuario u1 join pedido on (u1.email= usuario)
join localidad l1 on (u1.pueblo= l1.codm and u1.provincia= l1.provincia)
join provincia p1 on (u1.provincia= codp)

T05.004- Nombre de provincia y nombre de localidad ordenados por provincia y localidad (usando join) de las provincias de Aragón y de localidades cuyo nombre comience por "B".
select p1.nombre, l1.pueblo
from provincia p1
join localidad l1 on (p1.codp= l1.provincia)
where (p1.nombre like 'Teruel' or p1.nombre like 'Zaragoza' or p1.nombre like 'Huesca') and l1.pueblo like 'B%'
order by p1.codp, l1.codm

T05.005- Apellidos y nombre de los usuarios y, si tienen, pedido que han realizado.
select apellidos, nombre, numpedido
from usuario left join pedido on usuario=email;

T05.006- Código y nombre de los artículos, si además es una cámara, mostrar también la resolución y el sensor.
select a.cod, nombre, resolucion, sensor
from articulo a
left join camara c on (a.cod = c.cod);

T05.007- Código, nombre y precio de venta al público de los artículos, si además se trata de un objetivo mostrar todos sus datos.
select a.cod, nombre, pvp, o.*
from articulo a left join objetivo o 
on o.cod = a.cod;

T05.008- Muestra las cestas del año 2010 junto con el nombre del artículo al que referencia y su precio de venta al público.
select c.*, nombre, pvp
from cesta c join articulo a on c.articulo=a.cod
where year(fecha)=2010;

T05.009- Muestra toda la información de los artículos. Si alguno aparece en una cesta del año 2010 muestra esta información.
select a.*, c.*
from articulo a
left join cesta c on (articulo=cod and year(fecha) = 2010);

T05.010- Disponibilidad en el stock de cada cámara junto con la resolución de todas las cámaras.
select s.*, resolucion
from stock s
right join camara on (cod=articulo);

T05.011- Código y nombre de los artículas que no tienen marca.
select cod, nombre from articulo where marca is null

T05.012- Código, nombre y marca de todos los artículos, tengan o no marca.
select cod, nombre, marca from articulo

T05.013- Código, nombre, marca y empresa responsable de la misma de todos los artículos. Si algún artículo no tiene marca debe aparecer en el listado con esta información vacía.
select cod, nombre, a.marca, empresa
from articulo a left join marca m 
on a.marca = m.marca;

T05.014- Información de todos los usuarios de la comunidad valenciana cuyo nombre empiece por 'P' incluyendo la dirección de envío en caso de que la tenga.
select u.*, d.*
from usuario u
left join direnvio d on (d.email=u.email)
where u.provincia in ('46','03','12')
and u.nombre like 'P%';

05.015- Código y nombre de los artículos, y código de pack en el caso de que pertenezca a alguno.
select a.cod, nombre, p.pack
from articulo a left join ptienea p on a.cod = p.articulo;

T05.016- Usuarios y pedidos que han realizado.
select u.email, u.nombre, u.apellidos, u.dni, p.*
from usuario u
right join pedido p on (u.email= p.usuario)

T05.017- Información de aquellos usuarios de la comunidad valenciana (códigos 03, 12 y 46) cuyo nombre empiece por 'P' que tienen dirección de envío pero mostrando, a la derecha, todas las direcciones de envío de la base de datos.
select u.*, d.*
from usuario u right join direnvio d
on u.email = d.email and u.provincia 
in (03, 12, 46) and u.nombre LIKE 'P%';


No hay comentarios:

Publicar un comentario