Está en la página 1de 5

Consultas multitabla (Composición interna)

Resuelve todas las consultas utilizando la sintaxis de SQL1 o SQL2.


1. Devuelve una lista con el nombre del producto, precio y nombre de
fabricante de todos los productos de la base de datos.
Modo SQL1
SELECT producto.nombre, precio, fabricante.nombre
FROM producto, fabricante
WHERE codigo_fabricante = fabricante.codigo

Observar que cuando los nombres de los atributos coinciden, los precedemos del nombre de
la tabla para distinguirlos. En la clausula WHERE hemos incluido fabricante delante de
codigo para explicitar que el codigo que queremos comparar es el de la tabla fabricante.
Modo SQL2
SELECT producto.nombre, precio, fabricante.nombre
FROM producto INNER JOIN fabricante
ON codigo_fabricante = fabricante.codigo

2. Devuelve una lista con el nombre del producto, precio y nombre de


fabricante de todos los productos de la base de datos. Ordena el resultado por
el nombre del fabricante, por orden alfabético.
SELECT producto.nombre, precio, fabricante.nombre
FROM producto INNER JOIN fabricante
ON codigo_fabricante = fabricante.codigo
ORDER BY fabricante.nombre

3. Devuelve una lista con el identificador del producto, nombre del producto,
identificador del fabricante y nombre del fabricante, de todos los productos de
la base de datos.
SELECT p.codigo, p.nombre, f.codigo, f.nombre
FROM producto p INNER JOIN fabricante f
ON p.codigo_fabricante = f.codigo
4. Devuelve el nombre del producto, su precio y el nombre de su fabricante,
del producto más barato.
SELECT producto.nombre, precio, fabricante.nombre
FROM producto, fabricante
WHERE codigo_fabricante = fabricante.codigo
ORDER BY precio
LIMIT 1

En este caso, reutilizamos la sentencia del primer ejercicio y añadimos ORDER BY precio, de
manera que obtenemos el producto con el precio más bajo el primero de la lista, y luego
decimos con LIMIT 1, que solo muestre la primera linia de la lista.

5. Devuelve del producto más caro, el nombre del producto, su precio y el


nombre de su fabricante.
SELECT p.nombre, p.precio, f.nombre
FROM producto p, fabricante f
WHERE p.codigo_fabricante = f.codigo
ORDER BY precio DESC
LIMIT 1

6. Devuelve una lista de todos los productos del fabricante Lenovo.


SELECT p.*
FROM producto p, fabricante f
WHERE p.codigo_fabricante = f.codigo AND f.nombre=’LENOVO’
7. Devuelve una lista de todos los productos del fabricante Crucial que tengan
un precio mayor que 200€.
SELECT p.*, f.nombre
FROM producto p INNER JOIN fabricante f
ON p.codigo_fabricante = f.codigo
WHERE f.nombre LIKE “Crucial” AND p.precio > 200

8. Devuelve un listado con todos los productos de los fabricantes Asus,


Hewlett-Packard y Seagate. Sin utilizar el operador IN.
SELECT p.*, f.nombre
FROM producto p INNER JOIN fabricante f
ON p.codigo_fabricante = f.codigo
WHERE f.nombre LIKE "Asus" OR f.nombre LIKE"Hewlett-Packard" OR
f.nombre LIKE"Seagate"

9. Devuelve un listado con todos los productos de los fabricantes Asus,


Hewlett-Packard y Seagate. Utilizando el operador IN.
SELECT p.*, f.nombre
FROM producto p INNER JOIN fabricante f
ON p.codigo_fabricante = f.codigo
WHERE f.nombre IN ("Asus", "Hewlett-Packard", "Seagate")

10. Devuelve un listado con el nombre y el precio de todos los productos de los
fabricantes cuyo nombre termine por la vocal e.
SELECT p.nombre, p.precio, f.nombre
FROM producto p INNER JOIN fabricante f
ON p.codigo_fabricante = f.codigo
WHERE f.nombre LIKE "%e"

11. Devuelve un listado con el nombre y el precio de todos los productos cuyo
nombre de fabricante contenga el carácter w en su nombre.
SELECT p.nombre, p.precio, f.nombre
FROM producto p INNER JOIN fabricante f
ON p.codigo_fabricante = f.codigo
WHERE f.nombre LIKE "%w%"
12. Devuelve un listado con el nombre de producto, precio y nombre de
fabricante, de todos los productos que tengan un precio mayor o igual a 180€.
Ordene el resultado en primer lugar por el precio (en orden descendente) y en
segundo lugar por el nombre (en orden ascendente)
SELECT p.nombre, p.precio, f.nombre
FROM producto p INNER JOIN fabricante f
ON p.codigo_fabricante = f.codigo
WHERE p.precio >= 180
ORDER BY p.precio DESC, p.nombre

13. Devuelve un listado con el identificador y el nombre de fabricante,


solamente de aquellos fabricantes que tienen productos asociados en la base
de datos. LEFT JOIN o RIGHT JOIN
SELECT DISTINCT f.codigo, f.nombre
FROM producto p LEFT JOIN fabricante f
ON p.codigo_fabricante = f.codigo

También podría gustarte