SlideShare a Scribd company logo
Consultes amb
múltiples taules
Miquel Boada
25-11-2016
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
Objectius
1. Subconsultes
Coneixements previs
• Model Entitat-Relació.
• Model relacional.
• Transformació del model Entitat-Relació al model relacional.
• Sistemes gestors de bases de dades (SGBD).
• Creació de base de dades.
• Creació de taules.
• Instrucció select
Requisits previs
• Ordinador amb MySQL server instal·lat.
• Client MySQL server (MySQL Workbench per la representació gràfica).
• Connexió al servidor des del client
• Una base de dades creada.
Autor: Miquel Boada Pàgina 2 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
SQL - Select
Consultes amb múltiples taules.............................................................................................................1
Objectius....................................................................................................................................................2
Coneixements previs................................................................................................................................2
Requisits previs.........................................................................................................................................2
Subconsultes.............................................................................................................................................6
Restriccions..........................................................................................................................................6
Exemples..............................................................................................................................................7
Consultes amb múltiples taules.............................................................................................................8
Format instrucció..............................................................................................................................10
Select … Join.......................................................................................................................................10
Inner Join : exemples........................................................................................................................11
Simplificació anotació.......................................................................................................................11
Noms columnes............................................................................................................................11
Àlies taules.....................................................................................................................................12
Funcionament JOIN...........................................................................................................................12
PAS 1: Producte cartesià entre les dues taules.........................................................................13
PAS 2: Selecció files segons ON..................................................................................................13
PAS 3: Selecció columnes.............................................................................................................14
Left Join/ Right Join.................................................................................................................................15
Left / Right join : exemples...............................................................................................................15
PAS 1: Producte cartesià entre les dues taules.........................................................................15
PAS 2: Selecció files.......................................................................................................................16
PAS 3: Eliminació files duplicades...............................................................................................16
Autor: Miquel Boada Pàgina 3 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
Per a realitzar les diferents consultes es partirà del següent model ER i la seva conversió al
model físic.
Superhero Planet
Les instruccions per a crear la base de dades , les taules i les dades es detallen a continuació.
Tenir en compte que la força i la intel·ligència es generen mitjançant un número aleatori i, per
tant, aquests valors diferiran dels valors mostrats en la taula anterior.
Autor: Miquel Boada Pàgina 4 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
create database if not exists dbheroes;
use dbheroes;
create table planet ( namep varchar(20), mass decimal(6,2) not null,
primary key(namep)
) engine=innodb;
create table superheroe(
nameh varchar(40),
planet varchar(20),
intelligence decimal(4,2) not null,
strong decimal(4,2) not null,
primary key(nameh)
) engine=innodb;
insert into planet values ("Mercury",0.06),("Venus",0.82),("Earth",1),("Mars",0.11),
("Jupiter",317.8),("Saturn",95.2),("Uranus",14.6),("Neptune",17.2);
alter table superheroe
add constraint fk_superhero_planet
foreign key (planet) references planet(namep)
on delete restrict
on update cascade;
insert into superhero values
("Superman","earth",round(rand()*100,2),round(rand()*100,2)),
("Batman","earth",round(rand()*100,2),round(rand()*100,2)),
("Spiderman","earth",round(rand()*100,2),round(rand()*100,2)),
("Thor","earth",round(rand()*100,2),round(rand()*100,2)),
("Hal Jordan",NULL,round(rand()*100,2),round(rand()*100,2)),
("Wonder Woman","earth",round(rand()*100,2),round(rand()*100,2)),
("Captain America",NULL,round(rand()*100,2),round(rand()*100,2)),
("Martian Manhunter","Mars",round(rand()*100,2),round(rand()*100,2));
Autor: Miquel Boada Pàgina 5 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
Subconsultes.
En algunes ocasions ens interessa obtenir les files d'una taula resultants de l'execució
d'una altra consulta. Per exemple, si es vol saber el nom del superheroi més intel·ligent,
primer caldrà buscar quin és el valor màxim d'intel·ligència i posteriorment seleccionar
tots els herois que tenen aquesta intel·ligència. Com es pot comprovar en el disseny del
text , el procés consta de dues fases:
1. Obtenir la intel·ligència màxima de la taula.
select max(intelligence) from superhero;
2. Seleccionar els herois que tenen la intel·ligència màxima
select nameh from superhero where …. -- Consulta inacabada!
Per a enllaçar les dues seleccions ho fem a la clausula where. El format de la instrucció és:
select columnes from taula --
Instrucció de subconsulta
where columa operador (select agregat(columna) from taula [where condició])
• columnes: columnes dels quals es vol obtenir el valor.
• columna: columna que ha de retornar la subconsulta.
• operador: operador de comparació (>,<,=,...)
• agregat: funció a aplicar a la consulta.
• taula: taula o taules sobre la qual es vol fer la consulta.
• condició: condició de la subconsulta.
Restriccions
• La subconsulta només pot retornar una columna d'una taula.
• La subconsulta només pot retornar una única fila.
Autor: Miquel Boada Pàgina 6 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
Exemples
Video: Subconsulta
-- El nom de tots els superherois que tenen la màxima intel·ligència
select nameh from superhero
where intelligence=(select max(intelligence) from superhero);
-- El nom de tots els superherois que tenen la una intel·ligència superior a la mitjana
-- i estan associats al planeta 'earth'
select nameh from superhero
where intelligence>(select avg(intelligence) from superhero)
and planet='earth'
-- El nom de tots els herois que tenen una intel·ligència superior a la mitjana dels
-- herois del planeta 'earth'
select nameh from superhero
where intelligence>(select avg(intelligence)
from superhero where planet='earth');
Autor: Miquel Boada Pàgina 7 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
Consultes amb múltiples taules
Quan es vol realitzar una consulta en una base de dades és habitual voler obtenir la informació
de columnes emmagatzemades en diferents taules. Quan es volen consultar múltiples taules
es pot fer utilitzant la notació (SQL:1989) o bé la notació (SQL:1992) que és l'estàndard que
aplicarem en aquest document. El motiiu d'utilitzar aquesta notació més moderna és per què
facilita la lectura i comprensió de la consulta i, per tant, és una millor opció.
Per a enllaçar diferents taules es poden utilitzar diferents mètodes: Inner join, Left join, Right
join, Outer join. Tot i que l'objectiu de cada una d'elles és diferent, la funcionalitat és la mateixa
per a tots els mètodes.
Els diferents tipus d'enllaç que es poden establir entre les diferents taules es representen en la
següent taula mitjançant imatges i l'opció associada a cada una d'elles.
Autor: Miquel Boada Pàgina 8 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
Intersecció entre els dos conjunts: elements conjunts a
ambdós conjunts.
Clausula: INNER JOIN
Elements només del conjunt esquerra.
Directiva: LEFT JOIN
Elements només del conjunt esquerra.
Directiva: LEFT JOIN (Sense NULL de TB)
Elements només del conjunt dret.
Directiva: RIGHT JOIN
Elements només del conjunt dret.
Directiva: RIGHT JOIN (Sense NULL de TA)
Autor: Miquel Boada Pàgina 9 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
Elements del conjunt esquerra i dret no comuns
Directiva: OUTER JOIN
Elements dels dos conjunts
Directiva: UNION
Format instrucció
En una instrucció SQL Select es poden incloure una o més directives «JOIN». A més, es poden
combinar aquestes sentències en una mateixa instrucció. Per a cada instrucció «JOIN» cal
indicar la taula amb la qual es fa l'enllaç i la condició amb la qual s'enllaça la taula: aquesta
condició normalment és entre la clau forana i la clau primària de les taules implicades.
Utilitzem «ON» per a expressar la condició d'enllaç.
En el següent recuadre es mostra el format de la instrucció SELECT amb la clàusula JOIN
integrada.
SELECT
[ALL | DISTINCT ]
select_expr1 [, select_expr2 ...]
[FROM table_reference
[INNER JOIN | LEFT OUTER JOIN | RIGHT OUTER JOIN | table_reference ON condition
[INNER JOIN | LEFT OUTER JOIN | RIGHT OUTER JOIN | table_reference ON condition...]]
[WHERE where_condition]
[ORDER BY {col_name | expr | position} [ASC | DESC], …]
Select … Join
Quan s'utilitza la clàusula «JOIN» en una instrucció SQL , cal tenir en compte que la nostra
consulta podrà obtenir informació dels camps o columnes de totes les taules referenciades
directament en la clàusula «FROM» o en la pròpia clàusula «JOIN». L'ordre en què
Autor: Miquel Boada Pàgina 10 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
s'especifiquen les taules és indiferent. Les instruccions «Select * from T1 INNER JOIN T2 ON …...» i
«Select * from T2 INNER JOIN T1 ON …...» són equivalents.
Inner Join : exemples
-- Obtenir totes les columnes de la taula planet i superheroe on el planeta indicat en la taula superheroe (clau
forana) coincideixi amb el nom del planet (namep) de la taula planet.
Select * from planet
INNER JOIN superheroe ON planet.namep = superheroe.planet;
Com es pot observar en l'execució , els valors de la columna «namep» i «planet» coincideixen
(són les dues columnes que hem utilitzat per a interseccionar les dues taules). Per a eliminar
les columnes duplicades l'única opció que hi ha és la d'especificar individualment les columnes
a retornar.
Podem combinar el join per a filtrar els resultats amb la clàusula «WHERE».
Select superheroe.*, mass from planet
INNER JOIN superheroe ON planet.namep = superheroe.planet
where intelligence>50
Simplificació anotació
Noms columnes
Per altra banda , la notació (taula.camp) només és necessària si el nom de les columnes és el
mateix amb les taules que formen part de la consulta. En les taules «planet» i «superheroe» no
hi ha cap nom de columna repetit. Les instruccions anteriors es poden simplificar utilitzant
només els noms de les columnes.
Select superheroe.*, mass from planet
Autor: Miquel Boada Pàgina 11 de 16
TA: Planet
TB: superhero
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
INNER JOIN superheroe ON namep = planet
where intelligence>50
Àlies taules
Si entre les taules hi ha molts columnes repetides la inclusió del nom de la taula pot complicar
la lectura de la mateixa. El llenguatge SQL ens permet associar un àlies a una taula i poder
utilitzar aquest àlies en qualsevol lloc de la consulta. Per assignar un àlies podem fer-ho
especificant directament el nom de l'àlies al costat de la taula o bé utilitzant la paraula AS per a
separar el nom de la taula del propi àlies.
L'especificació de l'àlies es pot fer utilitzant majúscules, minúscules o majúscules i minúscules
però cal tenir en compte que en Linux l'àlies és case sensitive i, per tant, caldrà mantenir el
mateix format en tota la sentència.
-- Utilització d'àlies amb AS
Select S.*, mass from planet AS P
inner join superheroe AS S on P.namep = S.planet
where S.intelligence>50;
-- Utilització d'àlies sense especificar AS
Select S.*, mass from planet P
inner join superheroe S on P.namep = S.planet
where S.intelligence>50;
Funcionament JOIN
Quan s'executa una instrucció select que conté la directiva JOIN , el sistema realitza una sèrie
de taules intermitjes sobre les quals realitza una sèrie d'operacions. La comprensió de com
funciona el sistema és important per a poder entendre millor les instruccions JOIN.
Per a simular el funcionament utilitzarem una base de dades amb dues taules amb els valors
següents:
Base de dades
TA TB
La taula A (TA) disposa d'un únic camp que és l'identificador primari
La taula B (TB) té dos camps, IdB que és l'identificador primari i
TAIdA , que és la clau forana a la taula A.
IdA IdB TAIdA
1 A 1
2 B 2
3 C 3
La sentència de la qual es simula el procés és:
Select IdB, TAIdA from TA inner join TB on IdA=TAIdA;
Autor: Miquel Boada Pàgina 12 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
PAS 1: Producte cartesià entre les dues taules
En primer lloc es genera una taula intermitja on s'emmatgatzema el producte cartesià de les
dues taules. Això és, la combinació de cada una de les files de la taula A amb cada una de les
files de la taula B.
Taula temporal 1: producte cartesià
IdA (TA)1
IdB (TB) TAIdA (TB)
1 A 1
2 B 1
3 C 1
1 A 2
2 B 2
3 C 2
1 A 3
2 B 3
3 C 3
PAS 2: Selecció files segons ON
Seleccionar aquelles files que compleixen la condició especificada en la clàusula «ON». En el
nostre cas, aquelles que la primera columna i la tercera continguin el mateix valor.
Taula temporal 2: Clàusula ON
IdA (TA) IdB (TB) TAIdA (TB)
1 A 1
2 B 1
3 C 1
1 A 2
2 B 2
3 C 2
1 A 3
2 B 3
3 C 3
1 Entre parèntesis s'indica la taula a la qual pertany la col·lumna
Autor: Miquel Boada Pàgina 13 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
Taula temporal 2 (final) : Clàusula ON
IdA (TA) IdB (TB) TAIdA (TB)
1 A 1
2 B 2
3 C 3
Exemple: Video - join i producte cartesià
PAS 3: Selecció columnes
Generar la tercera taula amb les columnes que realment s'han seleccionat.
Taula temporal 3: selecció columnes Taula temporal 3 (final): selecció columnes
IdA (TA) IdB (TB) TAIdA (TB) IdB (TB) TAIdA (TB)
1 A 1 A 1
2 B 2 B 2
3 C 3 C 3
L'última taula generada és el resultat final de la consulta i conté les dades que visualitzarà
l'usuari. Aquest exemple s'ha realitzat amb una consulta simple. Per a veure els diferents
processos involucrats en una consulta determinada , podeu incloure la paraula clau EXPLAIN
abans de la instrucció select.
Explain select IdB, TAIdA from TA inner join TB on IdA=TAIdA;
Autor: Miquel Boada Pàgina 14 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
Left Join/ Right Join
Tornant a l'exemple dels superherois volem obtenir tots els planetes que
no tenen cap heroi assignat. La consulta , a nivell de conjunts, seria la de
la imatge, on TA és la taula de planetes i TB és la taula de superherois. Per
a realitzar aquest tipus de consulta cal utilitzar «Left o Right» join, segons
si es volen escollir els elements de l'esquerra (TA) o de la dreta (TB).
Left / Right join : exemples
-- Obtenir tota la informació dels planetes amb el nom del superheroi
-- que tenen assignat
Select distinct p.*, s.nameh
from planet AS p left join superheroe AS s on p.namep=s.planet;
Select distinct p.*, s.nameh
from superheroe AS s right join planet AS p on p.namep=s.planet;
Planet Superheroe
Nom Mass Nameh Planet Strong Intelligence
Venus 0.82 Superman Earth 60 50
Earth 1 Batman Earth 50 70
PAS 1: Producte cartesià entre les dues taules
En primer lloc es genera una taula intermitja on s'emmatgatzema el producte cartesià de les
dues taules , igual que amb inner join. En aquest cas, s'inclouen les files amb valor NULL per la
taula dreta (si fem left join) o esquerra (si fem right join).
Producte Cartesià
Nom Mass Nameh Planet Strong Intelligence
Venus 0.82 Superman Earth 60 50
Venus 0.82 Batman Earth 50 70
Earth 1 Superman Earth 60 50
Earth 1 Batman Earth 50 70
Venus 0.82 NULL NULL NULL NULL
Earth 1 NULL NULL NULL NULL
Autor: Miquel Boada Pàgina 15 de 16
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 4 – Consultes amb múltiples taules
PAS 2: Selecció files
Es seleccionen totes les files de la taula de l'esquerra. Per aquelles files que tinguin informació
comuna a les dues taules relacionades amb left join, s'eliminaran aquelles que no compleixin
la condició especificada en la clausula «on», excepte que el camp de la segona taula sigui
NULL. Si la nostra condició és que el nom del planeta sigui el mateix:
Selecció files que compleixen inner join o NULL
Nom Mass Nameh Planet Strong Intelligence
Venus 0.82 Superman Earth 60 50
Venus 0.82 Batman Earth 50 70
Earth 1 Superman Earth 60 50
Earth 1 Batman Earth 50 70
Venus 0.82 NULL NULL NULL NULL
Earth 1 NULL NULL NULL NULL
PAS 3: Eliminació files duplicades
S'esborren totes aquelles columnes que la primary key tingui valor NULL sempre i quan hi hagi
una altra fila que tingui els mateixos valors però sense valor NULL.
Selecció files que compleixen inner join o NULL
Nom Mass Nameh Planet Strong Intelligence
Earth 1 Superman Earth 60 50
Earth 1 Batman Earth 50 70
Venus 0.82 NULL NULL NULL NULL
Earth 1 NULL NULL NULL NULL
L'última fila de la taula s'elimina perquè la fila (Earth,1) ja existeix en la taula amb valors
diferents de NULL; primera i segona fila de la taula.
Autor: Miquel Boada Pàgina 16 de 16

More Related Content

Viewers also liked

PROCESOS MENTALES
PROCESOS MENTALESPROCESOS MENTALES
PROCESOS MENTALES
Natasha Montilla
 
Variables y constantes
Variables y constantesVariables y constantes
Variables y constantes
Daniel Rodríguez
 
Grow Grow Grow Bigger
Grow Grow Grow BiggerGrow Grow Grow Bigger
Grow Grow Grow Bigger
melarodriguez
 
tìm chỗ bán đồng hồ casio khuyến mãi 2014
tìm chỗ bán đồng hồ casio khuyến mãi 2014tìm chỗ bán đồng hồ casio khuyến mãi 2014
tìm chỗ bán đồng hồ casio khuyến mãi 2014elliot351
 
EDELNet cooperation: from summer school to network (MID2017)
EDELNet cooperation: from summer school to network (MID2017)EDELNet cooperation: from summer school to network (MID2017)
EDELNet cooperation: from summer school to network (MID2017)
EADTU
 
Análisis de la respuesta transitoria. sistemas de segundo orden
Análisis de la respuesta transitoria. sistemas de segundo ordenAnálisis de la respuesta transitoria. sistemas de segundo orden
Análisis de la respuesta transitoria. sistemas de segundo orden
jeickson sulbaran
 
Information Security Fall Semester 2016 - Course Wrap Up Summary
Information Security Fall Semester 2016 - Course Wrap Up SummaryInformation Security Fall Semester 2016 - Course Wrap Up Summary
Information Security Fall Semester 2016 - Course Wrap Up Summary
Nicholas Davis
 
OECD-Wirtschaftsausblick Juni 2016
OECD-Wirtschaftsausblick Juni 2016OECD-Wirtschaftsausblick Juni 2016
OECD-Wirtschaftsausblick Juni 2016
OECD Berlin Centre
 
¿Entendían los romanos, en vivo y en directo, a Cicerón?
¿Entendían los romanos, en vivo y en directo, a Cicerón?¿Entendían los romanos, en vivo y en directo, a Cicerón?
¿Entendían los romanos, en vivo y en directo, a Cicerón?
Ysmael Santana
 
SiddharthaMitra_resume_pdf
SiddharthaMitra_resume_pdfSiddharthaMitra_resume_pdf
SiddharthaMitra_resume_pdfSiddhartha Mitra
 
Logica y argumentacion
Logica y argumentacionLogica y argumentacion
Logica y argumentacion
Oscar Arcila
 
Hel·lèniques: verbs 2
Hel·lèniques: verbs 2Hel·lèniques: verbs 2
Hel·lèniques: verbs 2
SANTI CARBONELL
 

Viewers also liked (13)

PROCESOS MENTALES
PROCESOS MENTALESPROCESOS MENTALES
PROCESOS MENTALES
 
Variables y constantes
Variables y constantesVariables y constantes
Variables y constantes
 
Expo gsus
Expo gsusExpo gsus
Expo gsus
 
Grow Grow Grow Bigger
Grow Grow Grow BiggerGrow Grow Grow Bigger
Grow Grow Grow Bigger
 
tìm chỗ bán đồng hồ casio khuyến mãi 2014
tìm chỗ bán đồng hồ casio khuyến mãi 2014tìm chỗ bán đồng hồ casio khuyến mãi 2014
tìm chỗ bán đồng hồ casio khuyến mãi 2014
 
EDELNet cooperation: from summer school to network (MID2017)
EDELNet cooperation: from summer school to network (MID2017)EDELNet cooperation: from summer school to network (MID2017)
EDELNet cooperation: from summer school to network (MID2017)
 
Análisis de la respuesta transitoria. sistemas de segundo orden
Análisis de la respuesta transitoria. sistemas de segundo ordenAnálisis de la respuesta transitoria. sistemas de segundo orden
Análisis de la respuesta transitoria. sistemas de segundo orden
 
Information Security Fall Semester 2016 - Course Wrap Up Summary
Information Security Fall Semester 2016 - Course Wrap Up SummaryInformation Security Fall Semester 2016 - Course Wrap Up Summary
Information Security Fall Semester 2016 - Course Wrap Up Summary
 
OECD-Wirtschaftsausblick Juni 2016
OECD-Wirtschaftsausblick Juni 2016OECD-Wirtschaftsausblick Juni 2016
OECD-Wirtschaftsausblick Juni 2016
 
¿Entendían los romanos, en vivo y en directo, a Cicerón?
¿Entendían los romanos, en vivo y en directo, a Cicerón?¿Entendían los romanos, en vivo y en directo, a Cicerón?
¿Entendían los romanos, en vivo y en directo, a Cicerón?
 
SiddharthaMitra_resume_pdf
SiddharthaMitra_resume_pdfSiddharthaMitra_resume_pdf
SiddharthaMitra_resume_pdf
 
Logica y argumentacion
Logica y argumentacionLogica y argumentacion
Logica y argumentacion
 
Hel·lèniques: verbs 2
Hel·lèniques: verbs 2Hel·lèniques: verbs 2
Hel·lèniques: verbs 2
 

Similar to Consultes amb múltiples taules utilitzant left, right i inner join. Funcionament intern de les consultes. Subconsultes. Utilització àlies.

Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Miquel Boada Artigas
 
Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.
Miquel Boada Artigas
 
Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.
Miquel Boada Artigas
 
UF0322 Bases de dades Access 2016
UF0322 Bases de dades Access 2016UF0322 Bases de dades Access 2016
UF0322 Bases de dades Access 2016
Antonio Carrasco Vidal
 
Cas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries LliuresCas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries Lliures
Jordi Catà
 
UF0322 Apunts
UF0322 ApuntsUF0322 Apunts
UF0322 Apunts
Antonio Carrasco Vidal
 
3 gestió bàsica d'informació en sistemes gestors de bases de dades
3 gestió bàsica d'informació en sistemes gestors de bases de dades3 gestió bàsica d'informació en sistemes gestors de bases de dades
3 gestió bàsica d'informació en sistemes gestors de bases de dades
Marketing per tu
 
Itineraris IT Academy (2020)
Itineraris IT Academy (2020)Itineraris IT Academy (2020)
Itineraris IT Academy (2020)
Barcelona Activa
 
Sistemes gestors de bases de dades
Sistemes gestors de bases de dadesSistemes gestors de bases de dades
Sistemes gestors de bases de dades
Miquel Boada Artigas
 
Introduccio a Drupal, guifi.net al citilab.
Introduccio a Drupal, guifi.net al citilab.Introduccio a Drupal, guifi.net al citilab.
Introduccio a Drupal, guifi.net al citilab.
Marc Navarro
 
Big data Curs del Cibernarium de Barcelona 2013
Big data Curs del Cibernarium de Barcelona 2013Big data Curs del Cibernarium de Barcelona 2013
Big data Curs del Cibernarium de Barcelona 2013
Marc Pous
 
crear un domini erik-fernandez
 crear un domini erik-fernandez crear un domini erik-fernandez
crear un domini erik-fernandez
ErikFernandez24
 
UNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITAL
UNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITALUNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITAL
UNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITAL
Pere Miquel Rosselló Espases
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
Xavier Herrero
 
J2EE
J2EEJ2EE
Exchange manage cloud: Daniel Fernández
Exchange manage cloud: Daniel FernándezExchange manage cloud: Daniel Fernández
Exchange manage cloud: Daniel Fernández
Nexica
 

Similar to Consultes amb múltiples taules utilitzant left, right i inner join. Funcionament intern de les consultes. Subconsultes. Utilització àlies. (20)

Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
 
Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.
 
Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.
 
UF0322 Bases de dades Access 2016
UF0322 Bases de dades Access 2016UF0322 Bases de dades Access 2016
UF0322 Bases de dades Access 2016
 
Cas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries LliuresCas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries Lliures
 
UF0322 Apunts
UF0322 ApuntsUF0322 Apunts
UF0322 Apunts
 
What DB?
What DB?What DB?
What DB?
 
3 gestió bàsica d'informació en sistemes gestors de bases de dades
3 gestió bàsica d'informació en sistemes gestors de bases de dades3 gestió bàsica d'informació en sistemes gestors de bases de dades
3 gestió bàsica d'informació en sistemes gestors de bases de dades
 
Itineraris IT Academy (2020)
Itineraris IT Academy (2020)Itineraris IT Academy (2020)
Itineraris IT Academy (2020)
 
Sistemes gestors de bases de dades
Sistemes gestors de bases de dadesSistemes gestors de bases de dades
Sistemes gestors de bases de dades
 
Introduccio a Drupal, guifi.net al citilab.
Introduccio a Drupal, guifi.net al citilab.Introduccio a Drupal, guifi.net al citilab.
Introduccio a Drupal, guifi.net al citilab.
 
Big data Curs del Cibernarium de Barcelona 2013
Big data Curs del Cibernarium de Barcelona 2013Big data Curs del Cibernarium de Barcelona 2013
Big data Curs del Cibernarium de Barcelona 2013
 
Laboratoris 1
Laboratoris 1Laboratoris 1
Laboratoris 1
 
crear un domini erik-fernandez
 crear un domini erik-fernandez crear un domini erik-fernandez
crear un domini erik-fernandez
 
Programaci aia
Programaci  aiaProgramaci  aia
Programaci aia
 
Programaci aia
Programaci  aiaProgramaci  aia
Programaci aia
 
UNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITAL
UNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITALUNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITAL
UNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITAL
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
J2EE
J2EEJ2EE
J2EE
 
Exchange manage cloud: Daniel Fernández
Exchange manage cloud: Daniel FernándezExchange manage cloud: Daniel Fernández
Exchange manage cloud: Daniel Fernández
 

More from Miquel Boada Artigas

Configuracio servei dns_linux
Configuracio servei dns_linuxConfiguracio servei dns_linux
Configuracio servei dns_linux
Miquel Boada Artigas
 
Configuracio servei dns Windows
Configuracio servei dns WindowsConfiguracio servei dns Windows
Configuracio servei dns Windows
Miquel Boada Artigas
 
Configuració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows ServerConfiguració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows Server
Miquel Boada Artigas
 
Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.
Miquel Boada Artigas
 
Model relacional i normalització
Model relacional i normalitzacióModel relacional i normalització
Model relacional i normalització
Miquel Boada Artigas
 
Transformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacionalTransformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacional
Miquel Boada Artigas
 
Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)
Miquel Boada Artigas
 
Model entitat relació (ER)
Model entitat relació (ER)Model entitat relació (ER)
Model entitat relació (ER)
Miquel Boada Artigas
 
Introducció bases de dades distribuides
Introducció bases de dades distribuidesIntroducció bases de dades distribuides
Introducció bases de dades distribuides
Miquel Boada Artigas
 
Introducció bases de dades centralitzades
Introducció bases de dades centralitzadesIntroducció bases de dades centralitzades
Introducció bases de dades centralitzades
Miquel Boada Artigas
 
Emmagatzematge de la informació
Emmagatzematge de la informacióEmmagatzematge de la informació
Emmagatzematge de la informació
Miquel Boada Artigas
 
Història de les bases de dades
Història de les bases de dadesHistòria de les bases de dades
Història de les bases de dades
Miquel Boada Artigas
 
Model relacional i formes normals
Model relacional i formes normalsModel relacional i formes normals
Model relacional i formes normals
Miquel Boada Artigas
 
Entity-Relationship Model - Model Entitat Relació (ER)
Entity-Relationship Model - Model Entitat Relació (ER)Entity-Relationship Model - Model Entitat Relació (ER)
Entity-Relationship Model - Model Entitat Relació (ER)
Miquel Boada Artigas
 
Introducció a les bases de dades
Introducció a les bases de dadesIntroducció a les bases de dades
Introducció a les bases de dades
Miquel Boada Artigas
 

More from Miquel Boada Artigas (15)

Configuracio servei dns_linux
Configuracio servei dns_linuxConfiguracio servei dns_linux
Configuracio servei dns_linux
 
Configuracio servei dns Windows
Configuracio servei dns WindowsConfiguracio servei dns Windows
Configuracio servei dns Windows
 
Configuració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows ServerConfiguració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows Server
 
Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.
 
Model relacional i normalització
Model relacional i normalitzacióModel relacional i normalització
Model relacional i normalització
 
Transformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacionalTransformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacional
 
Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)
 
Model entitat relació (ER)
Model entitat relació (ER)Model entitat relació (ER)
Model entitat relació (ER)
 
Introducció bases de dades distribuides
Introducció bases de dades distribuidesIntroducció bases de dades distribuides
Introducció bases de dades distribuides
 
Introducció bases de dades centralitzades
Introducció bases de dades centralitzadesIntroducció bases de dades centralitzades
Introducció bases de dades centralitzades
 
Emmagatzematge de la informació
Emmagatzematge de la informacióEmmagatzematge de la informació
Emmagatzematge de la informació
 
Història de les bases de dades
Història de les bases de dadesHistòria de les bases de dades
Història de les bases de dades
 
Model relacional i formes normals
Model relacional i formes normalsModel relacional i formes normals
Model relacional i formes normals
 
Entity-Relationship Model - Model Entitat Relació (ER)
Entity-Relationship Model - Model Entitat Relació (ER)Entity-Relationship Model - Model Entitat Relació (ER)
Entity-Relationship Model - Model Entitat Relació (ER)
 
Introducció a les bases de dades
Introducció a les bases de dadesIntroducció a les bases de dades
Introducció a les bases de dades
 

Recently uploaded

Oferta definitiva de places Curs 2024-25
Oferta definitiva de places Curs 2024-25Oferta definitiva de places Curs 2024-25
Oferta definitiva de places Curs 2024-25
SuperAdmin9
 
Tema 9. Les forces. PER A 2N DE LA ESO ..
Tema 9. Les forces. PER A 2N DE LA ESO ..Tema 9. Les forces. PER A 2N DE LA ESO ..
Tema 9. Les forces. PER A 2N DE LA ESO ..
EireLanezMartnez
 
poemes catalans musicats als Països Catalans.pdf
poemes catalans musicats als Països Catalans.pdfpoemes catalans musicats als Països Catalans.pdf
poemes catalans musicats als Països Catalans.pdf
MnicaFerri1
 
Menú MENJADOR ESCOLAR juny 24 Ernest Lluch.pdf
Menú MENJADOR ESCOLAR juny 24 Ernest Lluch.pdfMenú MENJADOR ESCOLAR juny 24 Ernest Lluch.pdf
Menú MENJADOR ESCOLAR juny 24 Ernest Lluch.pdf
Ernest Lluch
 
Filosofia 1r Bachillerato. Sistemes ètics. Diàleg amb la tradició . Bé, virtu...
Filosofia 1r Bachillerato. Sistemes ètics. Diàleg amb la tradició . Bé, virtu...Filosofia 1r Bachillerato. Sistemes ètics. Diàleg amb la tradició . Bé, virtu...
Filosofia 1r Bachillerato. Sistemes ètics. Diàleg amb la tradició . Bé, virtu...
MaraZiga15
 
Exhibició pública - Programa de mà - 2324 3T
Exhibició pública - Programa de mà - 2324 3TExhibició pública - Programa de mà - 2324 3T
Exhibició pública - Programa de mà - 2324 3T
Institut-Escola Les Vinyes
 
INFORME_OFERTA_OME_INFORME_OFERTA (1).pdf
INFORME_OFERTA_OME_INFORME_OFERTA (1).pdfINFORME_OFERTA_OME_INFORME_OFERTA (1).pdf
INFORME_OFERTA_OME_INFORME_OFERTA (1).pdf
Ernest Lluch
 
Viceverba_appdelmes_0624_joc per aprendre verbs llatins
Viceverba_appdelmes_0624_joc per aprendre verbs llatinsViceverba_appdelmes_0624_joc per aprendre verbs llatins
Viceverba_appdelmes_0624_joc per aprendre verbs llatins
Daniel Fernández
 

Recently uploaded (8)

Oferta definitiva de places Curs 2024-25
Oferta definitiva de places Curs 2024-25Oferta definitiva de places Curs 2024-25
Oferta definitiva de places Curs 2024-25
 
Tema 9. Les forces. PER A 2N DE LA ESO ..
Tema 9. Les forces. PER A 2N DE LA ESO ..Tema 9. Les forces. PER A 2N DE LA ESO ..
Tema 9. Les forces. PER A 2N DE LA ESO ..
 
poemes catalans musicats als Països Catalans.pdf
poemes catalans musicats als Països Catalans.pdfpoemes catalans musicats als Països Catalans.pdf
poemes catalans musicats als Països Catalans.pdf
 
Menú MENJADOR ESCOLAR juny 24 Ernest Lluch.pdf
Menú MENJADOR ESCOLAR juny 24 Ernest Lluch.pdfMenú MENJADOR ESCOLAR juny 24 Ernest Lluch.pdf
Menú MENJADOR ESCOLAR juny 24 Ernest Lluch.pdf
 
Filosofia 1r Bachillerato. Sistemes ètics. Diàleg amb la tradició . Bé, virtu...
Filosofia 1r Bachillerato. Sistemes ètics. Diàleg amb la tradició . Bé, virtu...Filosofia 1r Bachillerato. Sistemes ètics. Diàleg amb la tradició . Bé, virtu...
Filosofia 1r Bachillerato. Sistemes ètics. Diàleg amb la tradició . Bé, virtu...
 
Exhibició pública - Programa de mà - 2324 3T
Exhibició pública - Programa de mà - 2324 3TExhibició pública - Programa de mà - 2324 3T
Exhibició pública - Programa de mà - 2324 3T
 
INFORME_OFERTA_OME_INFORME_OFERTA (1).pdf
INFORME_OFERTA_OME_INFORME_OFERTA (1).pdfINFORME_OFERTA_OME_INFORME_OFERTA (1).pdf
INFORME_OFERTA_OME_INFORME_OFERTA (1).pdf
 
Viceverba_appdelmes_0624_joc per aprendre verbs llatins
Viceverba_appdelmes_0624_joc per aprendre verbs llatinsViceverba_appdelmes_0624_joc per aprendre verbs llatins
Viceverba_appdelmes_0624_joc per aprendre verbs llatins
 

Consultes amb múltiples taules utilitzant left, right i inner join. Funcionament intern de les consultes. Subconsultes. Utilització àlies.

  • 2. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules Objectius 1. Subconsultes Coneixements previs • Model Entitat-Relació. • Model relacional. • Transformació del model Entitat-Relació al model relacional. • Sistemes gestors de bases de dades (SGBD). • Creació de base de dades. • Creació de taules. • Instrucció select Requisits previs • Ordinador amb MySQL server instal·lat. • Client MySQL server (MySQL Workbench per la representació gràfica). • Connexió al servidor des del client • Una base de dades creada. Autor: Miquel Boada Pàgina 2 de 16
  • 3. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules SQL - Select Consultes amb múltiples taules.............................................................................................................1 Objectius....................................................................................................................................................2 Coneixements previs................................................................................................................................2 Requisits previs.........................................................................................................................................2 Subconsultes.............................................................................................................................................6 Restriccions..........................................................................................................................................6 Exemples..............................................................................................................................................7 Consultes amb múltiples taules.............................................................................................................8 Format instrucció..............................................................................................................................10 Select … Join.......................................................................................................................................10 Inner Join : exemples........................................................................................................................11 Simplificació anotació.......................................................................................................................11 Noms columnes............................................................................................................................11 Àlies taules.....................................................................................................................................12 Funcionament JOIN...........................................................................................................................12 PAS 1: Producte cartesià entre les dues taules.........................................................................13 PAS 2: Selecció files segons ON..................................................................................................13 PAS 3: Selecció columnes.............................................................................................................14 Left Join/ Right Join.................................................................................................................................15 Left / Right join : exemples...............................................................................................................15 PAS 1: Producte cartesià entre les dues taules.........................................................................15 PAS 2: Selecció files.......................................................................................................................16 PAS 3: Eliminació files duplicades...............................................................................................16 Autor: Miquel Boada Pàgina 3 de 16
  • 4. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules Per a realitzar les diferents consultes es partirà del següent model ER i la seva conversió al model físic. Superhero Planet Les instruccions per a crear la base de dades , les taules i les dades es detallen a continuació. Tenir en compte que la força i la intel·ligència es generen mitjançant un número aleatori i, per tant, aquests valors diferiran dels valors mostrats en la taula anterior. Autor: Miquel Boada Pàgina 4 de 16
  • 5. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules create database if not exists dbheroes; use dbheroes; create table planet ( namep varchar(20), mass decimal(6,2) not null, primary key(namep) ) engine=innodb; create table superheroe( nameh varchar(40), planet varchar(20), intelligence decimal(4,2) not null, strong decimal(4,2) not null, primary key(nameh) ) engine=innodb; insert into planet values ("Mercury",0.06),("Venus",0.82),("Earth",1),("Mars",0.11), ("Jupiter",317.8),("Saturn",95.2),("Uranus",14.6),("Neptune",17.2); alter table superheroe add constraint fk_superhero_planet foreign key (planet) references planet(namep) on delete restrict on update cascade; insert into superhero values ("Superman","earth",round(rand()*100,2),round(rand()*100,2)), ("Batman","earth",round(rand()*100,2),round(rand()*100,2)), ("Spiderman","earth",round(rand()*100,2),round(rand()*100,2)), ("Thor","earth",round(rand()*100,2),round(rand()*100,2)), ("Hal Jordan",NULL,round(rand()*100,2),round(rand()*100,2)), ("Wonder Woman","earth",round(rand()*100,2),round(rand()*100,2)), ("Captain America",NULL,round(rand()*100,2),round(rand()*100,2)), ("Martian Manhunter","Mars",round(rand()*100,2),round(rand()*100,2)); Autor: Miquel Boada Pàgina 5 de 16
  • 6. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules Subconsultes. En algunes ocasions ens interessa obtenir les files d'una taula resultants de l'execució d'una altra consulta. Per exemple, si es vol saber el nom del superheroi més intel·ligent, primer caldrà buscar quin és el valor màxim d'intel·ligència i posteriorment seleccionar tots els herois que tenen aquesta intel·ligència. Com es pot comprovar en el disseny del text , el procés consta de dues fases: 1. Obtenir la intel·ligència màxima de la taula. select max(intelligence) from superhero; 2. Seleccionar els herois que tenen la intel·ligència màxima select nameh from superhero where …. -- Consulta inacabada! Per a enllaçar les dues seleccions ho fem a la clausula where. El format de la instrucció és: select columnes from taula -- Instrucció de subconsulta where columa operador (select agregat(columna) from taula [where condició]) • columnes: columnes dels quals es vol obtenir el valor. • columna: columna que ha de retornar la subconsulta. • operador: operador de comparació (>,<,=,...) • agregat: funció a aplicar a la consulta. • taula: taula o taules sobre la qual es vol fer la consulta. • condició: condició de la subconsulta. Restriccions • La subconsulta només pot retornar una columna d'una taula. • La subconsulta només pot retornar una única fila. Autor: Miquel Boada Pàgina 6 de 16
  • 7. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules Exemples Video: Subconsulta -- El nom de tots els superherois que tenen la màxima intel·ligència select nameh from superhero where intelligence=(select max(intelligence) from superhero); -- El nom de tots els superherois que tenen la una intel·ligència superior a la mitjana -- i estan associats al planeta 'earth' select nameh from superhero where intelligence>(select avg(intelligence) from superhero) and planet='earth' -- El nom de tots els herois que tenen una intel·ligència superior a la mitjana dels -- herois del planeta 'earth' select nameh from superhero where intelligence>(select avg(intelligence) from superhero where planet='earth'); Autor: Miquel Boada Pàgina 7 de 16
  • 8. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules Consultes amb múltiples taules Quan es vol realitzar una consulta en una base de dades és habitual voler obtenir la informació de columnes emmagatzemades en diferents taules. Quan es volen consultar múltiples taules es pot fer utilitzant la notació (SQL:1989) o bé la notació (SQL:1992) que és l'estàndard que aplicarem en aquest document. El motiiu d'utilitzar aquesta notació més moderna és per què facilita la lectura i comprensió de la consulta i, per tant, és una millor opció. Per a enllaçar diferents taules es poden utilitzar diferents mètodes: Inner join, Left join, Right join, Outer join. Tot i que l'objectiu de cada una d'elles és diferent, la funcionalitat és la mateixa per a tots els mètodes. Els diferents tipus d'enllaç que es poden establir entre les diferents taules es representen en la següent taula mitjançant imatges i l'opció associada a cada una d'elles. Autor: Miquel Boada Pàgina 8 de 16
  • 9. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules Intersecció entre els dos conjunts: elements conjunts a ambdós conjunts. Clausula: INNER JOIN Elements només del conjunt esquerra. Directiva: LEFT JOIN Elements només del conjunt esquerra. Directiva: LEFT JOIN (Sense NULL de TB) Elements només del conjunt dret. Directiva: RIGHT JOIN Elements només del conjunt dret. Directiva: RIGHT JOIN (Sense NULL de TA) Autor: Miquel Boada Pàgina 9 de 16
  • 10. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules Elements del conjunt esquerra i dret no comuns Directiva: OUTER JOIN Elements dels dos conjunts Directiva: UNION Format instrucció En una instrucció SQL Select es poden incloure una o més directives «JOIN». A més, es poden combinar aquestes sentències en una mateixa instrucció. Per a cada instrucció «JOIN» cal indicar la taula amb la qual es fa l'enllaç i la condició amb la qual s'enllaça la taula: aquesta condició normalment és entre la clau forana i la clau primària de les taules implicades. Utilitzem «ON» per a expressar la condició d'enllaç. En el següent recuadre es mostra el format de la instrucció SELECT amb la clàusula JOIN integrada. SELECT [ALL | DISTINCT ] select_expr1 [, select_expr2 ...] [FROM table_reference [INNER JOIN | LEFT OUTER JOIN | RIGHT OUTER JOIN | table_reference ON condition [INNER JOIN | LEFT OUTER JOIN | RIGHT OUTER JOIN | table_reference ON condition...]] [WHERE where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], …] Select … Join Quan s'utilitza la clàusula «JOIN» en una instrucció SQL , cal tenir en compte que la nostra consulta podrà obtenir informació dels camps o columnes de totes les taules referenciades directament en la clàusula «FROM» o en la pròpia clàusula «JOIN». L'ordre en què Autor: Miquel Boada Pàgina 10 de 16
  • 11. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules s'especifiquen les taules és indiferent. Les instruccions «Select * from T1 INNER JOIN T2 ON …...» i «Select * from T2 INNER JOIN T1 ON …...» són equivalents. Inner Join : exemples -- Obtenir totes les columnes de la taula planet i superheroe on el planeta indicat en la taula superheroe (clau forana) coincideixi amb el nom del planet (namep) de la taula planet. Select * from planet INNER JOIN superheroe ON planet.namep = superheroe.planet; Com es pot observar en l'execució , els valors de la columna «namep» i «planet» coincideixen (són les dues columnes que hem utilitzat per a interseccionar les dues taules). Per a eliminar les columnes duplicades l'única opció que hi ha és la d'especificar individualment les columnes a retornar. Podem combinar el join per a filtrar els resultats amb la clàusula «WHERE». Select superheroe.*, mass from planet INNER JOIN superheroe ON planet.namep = superheroe.planet where intelligence>50 Simplificació anotació Noms columnes Per altra banda , la notació (taula.camp) només és necessària si el nom de les columnes és el mateix amb les taules que formen part de la consulta. En les taules «planet» i «superheroe» no hi ha cap nom de columna repetit. Les instruccions anteriors es poden simplificar utilitzant només els noms de les columnes. Select superheroe.*, mass from planet Autor: Miquel Boada Pàgina 11 de 16 TA: Planet TB: superhero
  • 12. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules INNER JOIN superheroe ON namep = planet where intelligence>50 Àlies taules Si entre les taules hi ha molts columnes repetides la inclusió del nom de la taula pot complicar la lectura de la mateixa. El llenguatge SQL ens permet associar un àlies a una taula i poder utilitzar aquest àlies en qualsevol lloc de la consulta. Per assignar un àlies podem fer-ho especificant directament el nom de l'àlies al costat de la taula o bé utilitzant la paraula AS per a separar el nom de la taula del propi àlies. L'especificació de l'àlies es pot fer utilitzant majúscules, minúscules o majúscules i minúscules però cal tenir en compte que en Linux l'àlies és case sensitive i, per tant, caldrà mantenir el mateix format en tota la sentència. -- Utilització d'àlies amb AS Select S.*, mass from planet AS P inner join superheroe AS S on P.namep = S.planet where S.intelligence>50; -- Utilització d'àlies sense especificar AS Select S.*, mass from planet P inner join superheroe S on P.namep = S.planet where S.intelligence>50; Funcionament JOIN Quan s'executa una instrucció select que conté la directiva JOIN , el sistema realitza una sèrie de taules intermitjes sobre les quals realitza una sèrie d'operacions. La comprensió de com funciona el sistema és important per a poder entendre millor les instruccions JOIN. Per a simular el funcionament utilitzarem una base de dades amb dues taules amb els valors següents: Base de dades TA TB La taula A (TA) disposa d'un únic camp que és l'identificador primari La taula B (TB) té dos camps, IdB que és l'identificador primari i TAIdA , que és la clau forana a la taula A. IdA IdB TAIdA 1 A 1 2 B 2 3 C 3 La sentència de la qual es simula el procés és: Select IdB, TAIdA from TA inner join TB on IdA=TAIdA; Autor: Miquel Boada Pàgina 12 de 16
  • 13. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules PAS 1: Producte cartesià entre les dues taules En primer lloc es genera una taula intermitja on s'emmatgatzema el producte cartesià de les dues taules. Això és, la combinació de cada una de les files de la taula A amb cada una de les files de la taula B. Taula temporal 1: producte cartesià IdA (TA)1 IdB (TB) TAIdA (TB) 1 A 1 2 B 1 3 C 1 1 A 2 2 B 2 3 C 2 1 A 3 2 B 3 3 C 3 PAS 2: Selecció files segons ON Seleccionar aquelles files que compleixen la condició especificada en la clàusula «ON». En el nostre cas, aquelles que la primera columna i la tercera continguin el mateix valor. Taula temporal 2: Clàusula ON IdA (TA) IdB (TB) TAIdA (TB) 1 A 1 2 B 1 3 C 1 1 A 2 2 B 2 3 C 2 1 A 3 2 B 3 3 C 3 1 Entre parèntesis s'indica la taula a la qual pertany la col·lumna Autor: Miquel Boada Pàgina 13 de 16
  • 14. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules Taula temporal 2 (final) : Clàusula ON IdA (TA) IdB (TB) TAIdA (TB) 1 A 1 2 B 2 3 C 3 Exemple: Video - join i producte cartesià PAS 3: Selecció columnes Generar la tercera taula amb les columnes que realment s'han seleccionat. Taula temporal 3: selecció columnes Taula temporal 3 (final): selecció columnes IdA (TA) IdB (TB) TAIdA (TB) IdB (TB) TAIdA (TB) 1 A 1 A 1 2 B 2 B 2 3 C 3 C 3 L'última taula generada és el resultat final de la consulta i conté les dades que visualitzarà l'usuari. Aquest exemple s'ha realitzat amb una consulta simple. Per a veure els diferents processos involucrats en una consulta determinada , podeu incloure la paraula clau EXPLAIN abans de la instrucció select. Explain select IdB, TAIdA from TA inner join TB on IdA=TAIdA; Autor: Miquel Boada Pàgina 14 de 16
  • 15. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules Left Join/ Right Join Tornant a l'exemple dels superherois volem obtenir tots els planetes que no tenen cap heroi assignat. La consulta , a nivell de conjunts, seria la de la imatge, on TA és la taula de planetes i TB és la taula de superherois. Per a realitzar aquest tipus de consulta cal utilitzar «Left o Right» join, segons si es volen escollir els elements de l'esquerra (TA) o de la dreta (TB). Left / Right join : exemples -- Obtenir tota la informació dels planetes amb el nom del superheroi -- que tenen assignat Select distinct p.*, s.nameh from planet AS p left join superheroe AS s on p.namep=s.planet; Select distinct p.*, s.nameh from superheroe AS s right join planet AS p on p.namep=s.planet; Planet Superheroe Nom Mass Nameh Planet Strong Intelligence Venus 0.82 Superman Earth 60 50 Earth 1 Batman Earth 50 70 PAS 1: Producte cartesià entre les dues taules En primer lloc es genera una taula intermitja on s'emmatgatzema el producte cartesià de les dues taules , igual que amb inner join. En aquest cas, s'inclouen les files amb valor NULL per la taula dreta (si fem left join) o esquerra (si fem right join). Producte Cartesià Nom Mass Nameh Planet Strong Intelligence Venus 0.82 Superman Earth 60 50 Venus 0.82 Batman Earth 50 70 Earth 1 Superman Earth 60 50 Earth 1 Batman Earth 50 70 Venus 0.82 NULL NULL NULL NULL Earth 1 NULL NULL NULL NULL Autor: Miquel Boada Pàgina 15 de 16
  • 16. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 4 – Consultes amb múltiples taules PAS 2: Selecció files Es seleccionen totes les files de la taula de l'esquerra. Per aquelles files que tinguin informació comuna a les dues taules relacionades amb left join, s'eliminaran aquelles que no compleixin la condició especificada en la clausula «on», excepte que el camp de la segona taula sigui NULL. Si la nostra condició és que el nom del planeta sigui el mateix: Selecció files que compleixen inner join o NULL Nom Mass Nameh Planet Strong Intelligence Venus 0.82 Superman Earth 60 50 Venus 0.82 Batman Earth 50 70 Earth 1 Superman Earth 60 50 Earth 1 Batman Earth 50 70 Venus 0.82 NULL NULL NULL NULL Earth 1 NULL NULL NULL NULL PAS 3: Eliminació files duplicades S'esborren totes aquelles columnes que la primary key tingui valor NULL sempre i quan hi hagi una altra fila que tingui els mateixos valors però sense valor NULL. Selecció files que compleixen inner join o NULL Nom Mass Nameh Planet Strong Intelligence Earth 1 Superman Earth 60 50 Earth 1 Batman Earth 50 70 Venus 0.82 NULL NULL NULL NULL Earth 1 NULL NULL NULL NULL L'última fila de la taula s'elimina perquè la fila (Earth,1) ja existeix en la taula amb valors diferents de NULL; primera i segona fila de la taula. Autor: Miquel Boada Pàgina 16 de 16