Soluciones

English version (when available)

T03.001- Código y nombre de los articulos con un precio entre 400 y 500 euros.

select cod,nombre from articulo where pvp between 400 and 500;
Solución alternativa:
select cod,nombre from articulo where pvp >= 400 and pvp <= 500;


T03.002- Código y nombre de los articulos con precio 415, 129, 1259 o 3995.

select cod,nombre from articulo 
where pvp in (415, 129, 1259, 3995);
Solución alternativa:
select cod,nombre from articulo 
where pvp = 415 or pvp = 129 or pvp = 1259 or pvp = 3995;


T03.003- Código y nombre de las provincias que no son Huelva, Sevilla, Asturias ni Barcelona.

select codp,nombre from provincia 
where nombre not in ('huelva', 'sevilla', 'asturias', 'barcelona');
Solución alternativa:
select codp,nombre from provincia 
where nombre != 'huelva' and nombre != 'sevilla' 
  and nombre != 'asturias'and nombre != 'barcelona';


T03.004- Código de la provincia Alicante.

select codp from provincia 
where nombre like 'Alicante%';


T03.005- Obtener el código, nombre y pvp de los articulos cuya marca comience por S.

select cod, nombre, pvp from articulo where marca like 'S%'


T03.006- Información sobre los usuarios cuyo email es de la eps.

select * from usuario where email like '%@eps.%'


T03.007- Código, nombre y resolución de los televisores cuya pantalla no esté entre 22 y 42.

select a.cod, nombre, resolucion 
from articulo a, tv 
where a.cod=tv.cod and pantalla not between 22 and 42;


T03.008- Código y nombre de los televisores cuyo panel sea tipo LED y su precio no supere los 1000 euros.

select t.cod, nombre from tv t, articulo a where t.cod=a.cod and panel like '%LED%' and pvp<=1000;


T03.009- Email de los usuarios cuyo código postal no sea 02012, 02018 o 02032.

select email from usuario
where codpos not in ('02012','02018','02032');


T03.010- Código y nombre de los packs de los que se conoce qué articulos los componen, eliminando duplicados.

select distinct cod, nombre 
from  articulo, ptienea 
where pack=cod;


T03.011- ¿Hay algún artículo en cesta que esté descatalogado?

select c.articulo,c.usuario,c.fecha,s.articulo stock,s.disponible,s.entrega 
from cesta c, stock s 
where c.articulo=s.articulo 
  and entrega='descatalogado';


T03.012- Código, nombre y pvp de las cámaras de tipo compacta.

select a.cod, nombre, pvp
from articulo a, camara c
where a.cod=c.cod and tipo like'%compacta%';


T03.013- Código, nombre y diferencia entre pvp e importe de los articulos que hayan sido solicitados en algún pedido a un importe distinto de su precio de venta al público.

select cod, nombre, pvp-importe
from articulo, linped
where cod=articulo and pvp<>importe;


T03.014- Número de pedido,fecha y nombre y apellidos del usuario que solicita el pedido, para aquellos pedidos solicitados por algún usuario de apellido MARTINEZ.

select numpedido, fecha, nombre, apellidos 
from pedido, usuario 
where usuario=email and apellidos like'%MARTINEZ%'


T03.015- Código, nombre y marca del artículo más caro.

select cod, nombre, marca 
from articulo 
where pvp = (select max(pvp) from articulo);
Solución alternativa:
select cod, nombre, marca 
from articulo 
where pvp >= all (select pvp from articulo);
La solución alternativa no funciona en versiones antiguas de MySQL por un "bug".

T03.016- Nombre, marca y resolucion de las cámaras que nunca se han solicitado.

select nombre, marca, resolucion 
from articulo a, camara c
where a.cod=c.cod and 
c.cod not in (select articulo from linped);


T03.017- Código, nombre, tipo y marca de las cámaras de marca Nikon, LG o Sigma.

select a.cod, nombre, tipo, marca 
from articulo a, camara c
where a.cod=c.cod and marca in ('NIKON','LG','SIGMA');


T03.018- Código, nombre y pvp de la cámara más cara de entre las de tipo réflex.

select a.cod, nombre, pvp
from articulo a, camara c
where a.cod=c.cod
and tipo like '%reflex%'
and pvp=(
    select max(pvp) 
    from articulo a, camara c 
    where a.cod=c.cod and tipo like '%reflex%');
Solución alternativa:
select a.cod, nombre, pvp
from articulo a, camara c
where a.cod=c.cod and tipo like'%réflex%'
and pvp >= all (select pvp from articulo a, camara c
                where a.cod=c.cod and tipo like'%réflex%');



T03.019- Marcas de las que no existe ningún televisor en nuestra base de datos.

select marca from marca 
where marca not in (select marca
                    from articulo a, tv t
                    where a.cod=t.cod);
Solución alternativa:
SELECT marca 
FROM marca m 
WHERE NOT EXISTS 
  (SELECT 1 FROM articulo a, tv t 
   where a.cod=t.cod and a.marca=m.marca);


T03.020- Código, nombre y disponibilidad de los artículos con menor disponibilidad de entre los que pueden estar disponibles en 24 horas.

select cod,nombre,disponible 
from stock, articulo 
where cod=articulo 
  and entrega='24 horas'
  and disponible=(select min(disponible) 
                   from stock 
                   where entrega='24 horas');
Solución alternativa:
select cod, nombre, disponible
from stock, articulo 
where cod=articulo 
and entrega ='24 horas'
and disponible <=all (select disponible
                      from stock
                      where entrega='24 horas');



T03.021- Nombre de los artículos cuyo nombre contenga la palabra EOS.

select nombre from articulo where nombre like '%EOS%';


T03.022- Tipo y focal de los objetivos que se monten en una cámara Canon sea cual sea el modelo.

select tipo, focaL from objetivo where montura like 'Canon%';


T03.023- Nombre de los artículos cuyo precio sea mayor de 100 pero menor o igual que 200.

select nombre from articulo where pvp>100 and pvp<=200;


T03.024- Nombre de los artículos cuyo precio sea mayor o igual que 100 pero menor o igual que 300.

select nombre from articulo where pvp between 100 and 300;


T03.025- Nombre de las cámaras cuya marca no comience por la letra S.

select nombre from articulo a, camara c where a.cod=c.cod and marca not like 'S%';


T03.026- Dirección de correo de los usuarios cuyo dni termine en B, L o P.

select email from usuario where dni like '%B' or dni like '%L' or dni like '%P';


T03.027- Código de los televisores que tengan un panel LCD o LED.

select cod from tv where panel like '%LCD%' or panel like '%LED%';


T03.028- Número de pedido y artículo con la línea de pedido de menor importe.

select numpedido, articulo 
from linped 
where importe = (select min(importe) from linped);


T03.029- Nombre de los televisores que tengan una pantalla mayor que el televisor de código A0686.

select nombre 
from articulo a, tv t 
where a.cod=t.cod 
  and pantalla > (select pantalla from tv where cod ='A0686');


T03.030- Líneas de pedido y número de pedido al que correspondan dichas líneas, y que incluyan más cantidad de artículos que las demás.

select linea, numpedido 
from linped 
where cantidad = (select max(cantidad) from linped);
Solución alternativa:
select linea, numpedido 
from linped 
where cantidad >= all (select cantidad from linped);


T03.031- Líneas de pedido y nombre de los artículos que aparecen en esas líneas, si el importe de esas líneas no es el menor de todas las líneas conocidas.

select distinct linea, nombre 
from articulo a, linped l 
where a.cod=l.articulo 
   and importe > (select min(importe) from linped);
Solución alternativa:
select distinct linea, nombre 
from articulo a, linped l 
where a.cod=l.articulo 
   and importe > any (select importe from linped);


T03.032- Nombre, precio y marca de los artículos con mayor disponibilidad de stock.

select nombre, pvp, marca 
from articulo a, stock s 
where a.cod=s.articulo 
   and s.disponible = (select max(disponible) from stock);
Solución alternativa:
select nombre, pvp, marca 
from articulo a, stock s 
where a.cod=s.articulo 
  and s.disponible >=all (select disponible from stock);


T03.033- Nombre, precio y marca de los artículos que no tengan la mayor disponibilidad de stock.

select nombre, pvp, marca 
from articulo a, stock s 
where a.cod=s.articulo 
   and s.disponible <> (select max(disponible) from stock);
Solución alternativa:
select nombre, pvp, marca 
from articulo a, stock s 
where a.cod=s.articulo 
   and s.disponible < any (select disponible from stock);


T03.034- Nombre de las provincias en las que viven usuarios que hayan realizado algún pedido, eliminando duplicados.

select distinct p.nombre 
from usuario u, provincia p, pedido pe 
where u.provincia=p.codp and u.email=pe.usuario;


T03.035- Nombre de los artículos que hayan sido seleccionados en alguna cesta con fecha entre 01.11.2010 y 31.12.2010

select distinct nombre 
from articulo a, cesta c 
where a.cod=c.articulo 
   and c.fecha between '2010-11-01' and '2010-12-31';


T03.036- Nombre de los artículos que hayan sido seleccionados en alguna cesta por usuarios de las provincias de Valencia o Alicante.

select distinct a.nombre 
from articulo a, cesta c, usuario u 
where a.cod=c.articulo 
  and c.usuario=u.email 
  and u.provincia in 
     (select codp 
      from provincia 
      where nombre like 'Alicante%' or nombre like 'Valencia%');


T03.037- Número identificador de los pedidos en los que se han incluido artículos a un importe menor que su pvp, eliminando duplicados.

select distinct numpedido 
from linped l, articulo a 
where l.articulo=a.cod and l.importe < a.pvp;