Consultas Multiples MySQL

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 22

Unidad Didáctica 8.

Consultas sobre
varias tablas. Composición interna y
cruzada
BD

Curso 2024
Arvy Ruiz
Índice

1 Consultas sobre varias tablas. Composición interna y cruzada 1


1.1 Consultas multitabla SQL 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Composiciones cruzadas (Producto cartesiano) . . . . . . . . . . . . . . . . . . .1
1.1.2 Composiciones internas (Intersección) . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Consultas multitabla SQL 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Composiciones cruzadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2 Composiciones internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.3 Composiciones externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 El orden en las tablas no afecta al resultado final . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 Podemos usar alias en las tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5 Unir tres o más tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6 Unir una tabla consigo misma (self- equi- join) . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7 Unir tablas de diferentes bases de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.8 Uniones equivalentes (equi- joins) y Uniones no equivalentes (non- equi- joins) .......... 15

2 Errores comunes 16

3 Referencias 18
Unidad Didáctica 8. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

1 Consultas sobre varias tablas. Composición interna


y cruzada

Las consultas multitabla nos permiten consultar información en más de una tabla. La única diferencia
respecto a las consultas sencillas es que vamos a tener que especificar en la cláusula FROM cuáles son las
tablas que vamos a usar y cómo las vamos a relacionar entre sí.
Para realizar este tipo de consultas podemos usar dos alternativas, la sintaxis de SQL 1 (SQL-86), que
consiste en realizar el producto cartesiano de las tablas y añadir un filtro para relacionar los datos que tienen
en común, y la sintaxis de SQL 2 que incluye todas las cláusulas de tipo JOIN.

1.1 Consultas multitabla SQL 1

1.1.1 Composiciones cruzadas (Producto cartesiano)

El producto cartesiano de dos conjuntos, es una operación que consiste en obtener otro conjunto cuyos
elementos son todas las parejas que pueden formarse entre los dos conjuntos. Por ejemplo, tendríamos
que coger el primer elemento del primer conjunto y formar una pareja con cada uno de los elementos del
segundo conjunto. Una vez hecho esto, repetimos el mismo proceso para cada uno de los elementos del
primer conjunto.
Unidad Didáctica 8. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

Ejemplo

1 SELECT *
2 FROMempleado , departamento ;

El resultado sería el siguiente:

1 +--------+-----------+--------+-----------+-----------+---------------------+----------------

2 | codigo | nif | nombre | apellido1 | apellido2 | codigo_departamento | codigo | nombre | presupuesto | gastos |
3 +--------+-----------+--------+-----------+-----------+---------------------+----------------

4 |1 | 32481596F | Aarón | Rivero | Gómez | 1 |1


| Desarrollo | 120000 | 6000 |
5 |2 | Y5575632D | Adela | Salas | Díaz |2 |1
| Desarrollo | 120000 | 6000 |
6 |3 | R6970642B | Adolfo | Rubio | Flores | 3 | 1 | Desarrollo | 120000 | 6000 |
7 |1 | 32481596F | Aarón | Rivero | Gómez | 1 |2
| Sistemas | 150000 | 21000 |
8 |2 | Y5575632D | Adela | Salas | Díaz |2 |2
| Sistemas | 150000 | 21000 |
9 | 3 | R6970642B | Adolfo | Rubio | Flores | 3 | 2 | Sistemas | 150000 | 21000 |
10 |1 | 32481596F | Aarón | Rivero | Gómez | 1 |3
| Recursos Humanos | 280000 | 25000 |
11 |2 | Y5575632D | Adela | Salas | Díaz |2 |3

| Recursos Humanos | 280000 | 25000 |


Unidad Didáctica 8. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

12 |3 | R6970642B | Adolfo | Rubio | Flores | 3 |3


| Recursos Humanos | 280000 | 25000 |
13 +--------+-----------+--------+-----------+-----------+---------------------+----------------

1.1.2 Composiciones internas ( Intersección )

La intersección de dos conjuntos es una operación que resulta en otro conjunto que contiene sólo los elementos
comunes que existen en ambos conjuntos.
Unidad Didáctica 8. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

Ejemplo
Para poder realizar una operación de intersección entre las dos tablas debemos utilizar la cláusula WHERE
para indicar la columna con la que queremos relacionar las dos tablas. Por ejemplo, para obtener un listado
de los empleados y el departamento donde trabaja cada uno podemos realizar la siguiente consulta:
1 SELECT *
2 FROMempleado , departamento
3 WHEREempleado . codigo_departamento = departamento . codigo

El resultado sería el siguiente:

1 +--------+-----------+--------+-----------+-----------+---------------------+--------+-------

2 | codigo | nif | nombre | apellido1 | apellido2 | codigo_departamento | codigo | nombre | presupuesto | gastos |
3 +--------+-----------+--------+-----------+-----------+---------------------+--------+-------

4 | 1 | 32481596F | Aarón | Rivero | Gómez |1 |1


| Desarrollo | 120000 | 6000 |
5 | 2 | Y5575632D | Adela | Salas | Díaz |2 |2
| Sistemas | 150000 | 21000 |
6 | 3|
R6970642B | Adolfo | Rubio | Flores | 3 |3
Unidad Didáctica 8. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

| Recursos Humanos | 280000 | 25000 |


7 +--------+-----------+--------+-----------+-----------+---------------------+--------+-------

Nota: Tenga en cuenta que con la operación de intersección sólo obtendremos los elementos de existan en
ambos conjuntos. Por lo tanto, en el ejemplo anterior puede ser que existan filas en la tabla empleado que no
aparecen en el resultado porque no tienen ningún departamento asociado, al igual que pueden existir filas
en la tabla departamento que no aparecen en el resultado porque no tienen ningún empleado asociado.
Unidad Didáctica 8. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

1.2 Consultas multitabla SQL 2

1.2.1 Composiciones cruzadas

• Producto cartesiano
– CROSS JOIN

Ejemplo de CROSS JOIN:


1 SELECT *
2 FROMempleado CROSS JOIN departamento

Esta consulta nos devolvería el producto cartesiano de las dos tablas.


Unidad Didáctica 8. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

1.2.2 Composiciones internas

• Join interna
– INNER JOIN o JOIN
– NATURAL JOIN

Ejemplo de INNER JOIN utilizando la cláusula ON:


1 SELECT *
2 FROMempleado INNER JOIN departamento
3 ON empleado . codigo_departamento = departamento . codigo

Esta consulta nos devolvería la intersección entre las dos tablas.


La palabra reservada INNER es opcional, de modo que la consulta anterior también se puede escribir así:
1 SELECT *
2 FROMempleado JOIN departamento
3 ON empleado . codigo_departamento = departamento . codigo

NOTA: Tenga en cuenta que si olvidamos incluir la cláusula ON obtendremos el producto cartesiano de las
dos tablas.

Por ejemplo, la siguiente consulta nos devolverá el producto cartesiano de las tablas empleado y departamento.

1 SELECT *
2 FROMempleado INNER JOIN departamento

Cuando queremos realizar una composición interna entre dos tablas y las columnas que queremos relacionar
tienen el mismo nombre en ambas tablas podemos utilizar la cláusula USING.
Ejemplo de INNER JOIN utilizando la cláusula USING:
Supongamos que la clave primaria de la tabla departamento se llama codigo_departamento y la clave ajena de
a tabla empleado se llama también codigo_departamento. En este caso podríamos realizar la siguiente
consulta:
1 SELECT *
2 FROMempleado INNER JOIN departamento
3 USING ( codigo_departamento )

Ejemplo de NATURAL JOIN:


1 SELECT *
2 FROMempleado NATURALJOIN departamento

Esta consulta nos devolvería la intersección de las dos tablas, pero utilizaría las columnas que tengan el
mismo nombre para relacionarlas. En este caso usaría las columnas código y nombre. Sólo deberíamos
utilizar una composición de tipo NATURAL JOIN cuando estemos seguros que los nombres de las
columnas sobre las que quiero relacionar las dos tablas se llaman igual en las dos tablas. Lo normal es que
no suelan tener el mismo nombre y que debamos usar una composición de tipo INNER JOIN.

1.2.3 Composiciones externas

• Join externa

– LEFT OUTER JOIN


– RIGHT OUTER JOIN
Unidad Didáctica 8. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

– FULL OUTER JOIN (No implementada en MySQL)


– NATURAL LEFT OUTER JOIN
– NATURAL RIGHT OUTER JOIN

– Ejemplo de LEFT OUTER JOIN:

1 SELECT *
2 FROMempleado LEFT JOIN departamento
3 ON empleado . codigo_departamento = departamento . codigo

Esta consulta devolverá todas las filas de la tabla que hemos colocado a la izquierda de la composición, en
este caso la tabla empleado. Y relacionará las filas de la tabla de la izquierda (empleado) con las filas de la
tabla de la derecha (departamento) con las que encuentre una coincidencia. Si no encuentra ninguna
coincidencia, se mostrarán los valores de la fila de la tabla izquierda (empleado) y en los valores de la tabla
derecha (departamento) donde no ha encontrado una coincidencia mostrará el valor NULL.

Ejemplo de RIGHT OUTER JOIN:

1 SELECT *
2 FROMempleado RIGHT JOIN departamento
3 ON empleado . codigo_departamento = departamento . codigo

Esta consulta devolverá todas las filas de la tabla que hemos colocado a la derecha de la composición, en
este caso la tabla departamento. Y relacionará las filas de la tabla de la derecha (departamento) con las filas de
la tabla de la izquierda (empleado) con las que encuentre una coincidencia. Si no encuentra ninguna
coincidencia, se mostrarán los valores de la fila de la tabla derecha (departamento) y en los valores de la tabla
izquierda (empleado) donde no ha encontrado una coincidencia mostrará el valor NULL.
Unidad Didáctica 8. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

Ejemplo de FULL OUTER JOIN:


Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

La composición FULL OUTER JOINnoestáimplementadaenMySQL, por lo tanto para poder simular esta
operación será necesario hacer uso del operador UNION, que nos realiza la union del resultado de dos
consultas.
El resultado esperado de una composición de tipo FULL OUTER JOIN es obtener la intersección de las dos
tablas, junto las filas de ambas tablas que no se puedan combinar. Dicho con otras palabras, el resultado
sería el equivalente a realizar la union de una consulta de tipo LEFT JOIN y una consultas de tipo RIGHT
JOIN
sobre las mismas tablas.

1 SELECT *
2 FROMempleado LEFT JOIN departamento
3 ON empleado . codigo_departamento = departamento . codigo
4
5 UNION
6
7 SELECT
8 FROMempleado RIGHT JOIN departamento
9 ON empleado . codigo_departamento = departamento . codigo

Ejemplo de NATURALLEFT JOIN:

1 SELECT *
2 FROMempleado NATURALLEFT JOIN departamento

Esta consulta realiza un LEFT JOIN entre las dos tablas, la única diferencia es que en este caso no es
necesario utilizar la cláusula ON para indicar sobre qué columna vamos a relacionar las dos tablas. En este
caso las tablas se van a relacionar sobre aquellas columnas que tengan el mismo nombre. Por lo tanto,
sólo deberíamos utilizar una composición de tipo NATURAL LEFT JOIN cuando estemos seguros de que
los nombres de las columnas sobre las que quiero relacionar las dos tablas se llaman igual en las dos tablas.

1.3 El orden en las tablas no afecta al resultado final


El orden en las tablas a la hora de realizar la operación de INNER JOIN no afecta al resultado final de la consulta,
siempre que se indique el mismo orden de las columnas en la cláusula SELECT.
En el siguiente ejemplo se muestran dos consultas donde hemos modificado el orden en el que aparecen las
tablas al realizar la operación de INNER JOIN. Sin embargo, las dos consultas devuelven el mismo resultado
porque en la cláusula SELECT hemos indicado el mismo orden de las columnas.

1 SELECT empleado.apellido1, empleado.nombre, departamento.nombre


2 FROM empleado INNER JOIN departamento
3 ON empleado.codigo_departamento = departamento.codigo

1 SELECT empleado.apellido1, empleado.nombre, departamento.nombre

Arvy Ruiz
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

2 FROM departamento INNER JOIN empleado


3 ON empleado.codigo_departamento = departamento.codigo El resultado de ambas consultas sería el mismo:

1 +--------------------+-----------------+---------------------+
2 | empleado.apellido1 | empleado.nombre | departamento.nombre | 3 +--------------------
+-----------------+---------------------+
4 | ... | ... | ... |

Si en las consultas anteriores hubiésemos utilizado el operador * en la cláusula SELECT, el resultado de


ambas consultas habría sido diferente, ya que el orden de las columnas dependería del orden en el que
aparecen las tablas en la operación de INNER JOIN.
Por ejemplo, estas dos consultas devolverían resultados diferentes:

1 /* 1 */
2 SELECT *
3 FROMempleado INNER JOIN departamento
4 ON empleado . codigo_departamento = departamento . codigo

1 /* 2 */
2 SELECT *
3 FROMdepartamento INNER JOIN empleado
4 ON empleado . codigo_departamento = departamento . codigo

El resultado de las dos consultas anteriores sería diferente:

1 /* 1 */
2 +--------+-----------+--------+-----------+-----------+---------------------+--------+-------

3 | codigo | nif | nombre | apellido1 | apellido2 | codigo_departamento | codigo | nombre | presupuesto | gastos |
4 +--------+-----------+--------+-----------+-----------+---------------------+--------+-------

1 /* 2 */
2 +--------+------------------+-------------+--------+--------+-----------+--------+-----------

3 | codigo | nombre | presupuesto | gastos | codigo | nif |


nombre | apellido1 | apellido2 | codigo_departamento |
4 +--------+------------------+-------------+--------+--------+-----------+--------+-----------

Arvy Ruiz
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

1.4 Podemos usar alias en las tablas


Para crear un alias en una tabla podemos utilizar la palabra reservada AS o escribir el nombre del alias
directamente después del nombre de la tabla.
A continuación se muestra un ejemplo de cada caso.
Ejemplo: Cómo crear una alias de una tabla utilizando la palabra reservada AS.
1 SELECT *
2 FROMempleado AS e INNER JOIN departamento AS d
3 ON e . codigo_departamento = d . codigo

Ejemplo: Cómo crear un alias de una tabla sin utilizar la palabra reservada AS.
1 SELECT *
2 FROMempleado e INNER JOIN departamento d
3 ON e . codigo_departamento = d . codigo

1.5 Unir tres o más tablas


Podemos unir tres o más tablas en una misma operación de INNER JOIN.
Ejemplo:

1 SELECT *
2 FROMcliente INNER JOIN empleado
3 ON cliente . codigo_empleado_rep_ventas = empleado . codigo_empleado
4 INNER JOIN pago
5 ON cliente . codigo_cliente = pago . codigo_cliente ;

1.6 Unir una tabla consigo misma (self- equi- join)


Para poder hacer una operación de INNER JOIN sobre la misma tabla es necesario utilizar un alias para la
tabla. A continuación se muestra un ejemplo de las dos formas posibles de hacer una operación de INNER
JOIN sobre la misma tablas haciendo uso de alias. Ejemplo: Cómo unir una tabla consigo misma.

1 SELECT empleado.nombre, empleado.apellido1, empleado.apellido2, jefe.nombre, jefe.apellido1, jefe.apellido2


2 FROM empleado INNER JOIN empleado AS jefe
3 ON empleado.codigo_jefe = jefe.codigo_empleado

1 SELECT empleado.nombre, empleado.apellido1, empleado.apellido2, jefe.nombre, jefe.apellido1, jefe.apellido2

Arvy Ruiz
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzada Curso 2024

2 FROM empleado INNER JOIN empleado jefe


3 ON empleado.codigo_jefe = jefe.codigo_empleado

4 Ejemplo: Cómo unir una tabla consigo misma varias veces.

1 SELECT empleado.*, jefe.*, super_jefe.*


2 FROM empleado INNER JOIN empleado AS jefe
3 ON empleado.codigo_jefe = jefe.codigo_empleado
4 INNER JOIN empleado AS super_jefe
5 ON jefe.codigo_jefe = super_jefe.codigo_empleado

1 SELECT empleado.*, jefe.*, super_jefe.*


2 FROM empleado INNER JOIN empleado jefe
3 ON empleado.codigo_jefe = jefe.codigo_empleado
4 INNER JOIN empleado super_jefe
5 ON jefe.codigo_jefe = super_jefe.codigo_empleado

Arvy Ruiz
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzada Curso 2023/2024

1.7 Unir tablas de diferentes bases de datos


En algunos casos puede ser necesario unir tablas de diferentes bases de datos en una misma consulta. En
este caso, tenemos que especificar el nombre de la base de datos antes del nombre de la tabla. Ejemplo:

1 SELECT *
2 FROMdb1 . tabla1 AS t1 INNER JOIN db2 . tabla2 AS t2
3 ON t1 . codigo = t2 . codigo

José Juan Sánchez Hernández 15


2 Errores comunes

1. Nos olvidamos de incluir en el WHERE la condición que nos relaciona las dos tablas.
Consulta incorrecta

1 SELECT *
2 FROMproducto , fabricante
3 WHEREfabricante . nombre = ' Lenovo ' ;

Consulta correcta

1 SELECT *
2 FROMproducto , fabricante
3 WHEREproducto . codigo_fabricante = fabricante . codigo AND fabricante . nombre = '
Lenovo ' ;

2. Nos olvidamos de incluir ONen las consultas de tipo INNER JOIN .

Consulta incorrecta

1 SELECT *
2 FROMproducto INNER JOIN fabricante
3 WHEREfabricante . nombre = ' Lenovo ' ;

Consulta correcta

1 SELECT *
2 FROMproducto INNER JOIN fabricante
3 ON producto . codigo_fabricante = fabricante . codigo
4 WHEREfabricante . nombre = ' Lenovo ' ;

3. Relacionamos las tablas utilizando nombres de columnas incorrectos.

Consulta incorrecta

1 SELECT *
2 FROMproducto INNER JOIN fabricante
3 ON producto . codigo = fabricante . codigo ;

Consulta correcta

1 SELECT *
2 FROMproducto INNER JOIN fabricante
3 ON producto . codigo_fabricante = fabricante . codigo ;

4. Cuando hacemos laI ntersección detres tablas con INNER JOIN nos olvidamos de incluir ONen alguna
de las intersecciones.

16
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzada Curso 2023/2024

Consulta incorrecta
1 SELECT DISTINCT nombre_cliente , nombre , apellido1
2 FROMcliente INNER JOIN empleado
3 INNER JOIN pago
4 ON cliente . codigo_cliente = pago . codigo_cliente ;

Consulta correcta

1 SELECT DISTINCT nombre_cliente, nombre, apellido1


2 FROM cliente INNER JOIN empleado
3 ON cliente.codigo_empleado_rep_ventas = empleado.codigo_empleado
4 INNER JOIN pago
5 ON cliente.codigo_cliente = pago.codigo_cliente;
Ejercicios. Realización de consultas MySQL.
Tienda de informática 1.1.1 Modelo entidad/relación. (Base de Datos ya existe en sus ejemplos)
DROP DATABASE IF EXISTS tienda;
2 CREATE DATABASE tienda CHARACTER SET utf8mb4;
3 USE tienda;
45
CREATE TABLE fabricante (
6 id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
7 nombre VARCHAR(100) NOT NULL
8 );
9
10 CREATE TABLE producto (
11 id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
12 nombre VARCHAR(100) NOT NULL,
13 precio DOUBLE NOT NULL,
14 id_fabricante INT UNSIGNED NOT NULL,
15 FOREIGN KEY (id_fabricante) REFERENCES fabricante(id)
16 );
17
18 INSERT INTO fabricante VALUES(1, 'Asus');
19 INSERT INTO fabricante VALUES(2, 'Lenovo');
20 INSERT INTO fabricante VALUES(3, 'Hewlett-Packard');
21 INSERT INTO fabricante VALUES(4, 'Samsung');
22 INSERT INTO fabricante VALUES(5, 'Seagate');
23 INSERT INTO fabricante VALUES(6, 'Crucial');
24 INSERT INTO fabricante VALUES(7, 'Gigabyte');
25 INSERT INTO fabricante VALUES(8, 'Huawei');
26 INSERT INTO fabricante VALUES(9, 'Xiaomi');
27
28 INSERT INTO producto VALUES(1, 'Disco duro SATA3 1TB', 86.99, 5);
29 INSERT INTO producto VALUES(2, 'Memoria RAM DDR4 8GB', 120, 6);
30 INSERT INTO producto VALUES(3, 'Disco SSD 1 TB', 150.99, 4);
31 INSERT INTO producto VALUES(4, 'GeForce GTX 1050Ti', 185, 7);
32 INSERT INTO producto VALUES(5, 'GeForce GTX 1080 Xtreme', 755, 6);
33 INSERT INTO producto VALUES(6, 'Monitor 24 LED Full HD', 202, 1);
34 INSERT INTO producto VALUES(7, 'Monitor 27 LED Full HD', 245.99, 1);
35 INSERT INTO producto VALUES(8, 'Portátil Yoga 520', 559, 2);
36 INSERT INTO producto VALUES(9, 'Portátil Ideapd 320', 444, 2);
37 INSERT INTO producto VALUES(10, 'Impresora HP Deskjet 3720', 59.99, 3);
38 INSERT INTO producto VALUES(11, 'Impresora HP Laserjet Pro M26nw', 180, 3);
EJERCICIOS
Consultas multitabla (Composición interna) Resuelva todas las consultas
utilizando la sintaxis de SQL1 y SQL2.

1. Devuelve una lista con el nombre del producto, precio y nombre de fabricante de todos los productos
de la base de datos.
2. Devuelve una lista con el nombre del producto, precio y nombre de fabricante de todos los productos
de la base de datos. Ordene el resultado por el nombre del fabricante, por orden alfabético.
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.
4. Devuelve el nombre del producto, su precio y el nombre de su fabricante, del producto más barato.
5. Devuelve el nombre del producto, su precio y el nombre de su fabricante, del producto más caro.
6. Devuelve una lista de todos los productos del fabricante Lenovo.
7. Devuelve una lista de todos los productos del fabricante Crucial que tengan un precio mayor que
200€.
8. Devuelve un listado con todos los productos de los fabricantes Asus, Hewlett-Packardy Seagate. Sin
utilizar el operador IN.
9. Devuelve un listado con todos los productos de los fabricantes Asus, Hewlett-Packardy Seagate.
Utilizando el operador IN.
10. Devuelve un listado con el nombre y el precio de todos los productos de los fabricantes cuyo nombre
termine por la vocal 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.
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)
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.
Arvy Ruiz

3 Referencias

• Wikibook SQL Exercises.


• Tutorial SQL de w3resource.
• MySQL Join Types by Steve Stedman.
• Guía visual de SQL Joins.
• Bases de Datos. 2ª Edición. Grupo editorial Garceta. Iván López Montalbán, Manuel de Castro Vázquez
y John Ospino Rivas.
• INNER JOIN.
• LEFT JOIN.
• RIGHT JOIN.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy