21
Copyright Oracle Corporation, 1998. Tous droits réservés. 4 4 Afficher des Données Issues de Plusieurs Tables

Afficher des Données Issues de Plusieurs Tables

Embed Size (px)

DESCRIPTION

Afficher des Données Issues de Plusieurs Tables. Objectifs. A la fin de ce chapitre, vous saurez : Ecrire des ordres SELECT pour accéder aux données de plusieurs tables en utilisant des équijointures et des non-équijointures - PowerPoint PPT Presentation

Citation preview

Page 1: Afficher des Données  Issues de Plusieurs Tables

Copyright Oracle Corporation, 1998. Tous droits réservés.

44

Afficher des Données Issues de Plusieurs Tables

Afficher des Données Issues de Plusieurs Tables

Page 2: Afficher des Données  Issues de Plusieurs Tables

4-2 Copyright Oracle Corporation, 1998. Tous droits réservés.

ObjectifsObjectifs

A la fin de ce chapitre, vous saurez :A la fin de ce chapitre, vous saurez :

• Ecrire des ordres SELECT pour accéder aux données de plusieurs tables en utilisant des équijointures et des non-équijointures

• Visualiser des données ne répondant pas aux conditions de jointure, en utilisant les jointures externes

• Relier une table à elle-même

A la fin de ce chapitre, vous saurez :A la fin de ce chapitre, vous saurez :

• Ecrire des ordres SELECT pour accéder aux données de plusieurs tables en utilisant des équijointures et des non-équijointures

• Visualiser des données ne répondant pas aux conditions de jointure, en utilisant les jointures externes

• Relier une table à elle-même

Page 3: Afficher des Données  Issues de Plusieurs Tables

4-3 Copyright Oracle Corporation, 1998. Tous droits réservés.

EMPNO DEPTNO LOC----- ------- -------- 7839 10 NEW YORK 7698 30 CHICAGO 7782 10 NEW YORK 7566 20 DALLAS 7654 30 CHICAGO 7499 30 CHICAGO...14 rows selected.

EMPNO DEPTNO LOC----- ------- -------- 7839 10 NEW YORK 7698 30 CHICAGO 7782 10 NEW YORK 7566 20 DALLAS 7654 30 CHICAGO 7499 30 CHICAGO...14 rows selected.

Afficher des Données Issues de Plusieurs Tables

Afficher des Données Issues de Plusieurs Tables

EMP EMP DEPT DEPT EMPNO ENAME ... DEPTNO------ ----- ... ------ 7839 KING ... 10 7698 BLAKE ... 30 ... 7934 MILLER ... 10

DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON

Page 4: Afficher des Données  Issues de Plusieurs Tables

4-4 Copyright Oracle Corporation, 1998. Tous droits réservés.

Qu'est-ce qu'une Jointure ?Qu'est-ce qu'une Jointure ?

Une jointure sert à extraire des données de Une jointure sert à extraire des données de plusieurs tables.plusieurs tables.

• Ecrivez la condition de jointure dans la clause WHERE.

• Placez le nom de la table avant le nom de la colonne lorsque celui-ci figure dans plusieurs tables.

Une jointure sert à extraire des données de Une jointure sert à extraire des données de plusieurs tables.plusieurs tables.

• Ecrivez la condition de jointure dans la clause WHERE.

• Placez le nom de la table avant le nom de la colonne lorsque celui-ci figure dans plusieurs tables.

SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column1 = table2.column2;

SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column1 = table2.column2;

Page 5: Afficher des Données  Issues de Plusieurs Tables

4-5 Copyright Oracle Corporation, 1998. Tous droits réservés.

Produit CartésienProduit Cartésien

• On obtient un produit cartésien lorsque :

– Une condition de jointure est omise

– Une condition de jointure est incorrecte

• Toutes les lignes de la première table sont jointes à toutes les lignes de la seconde

• Pour éviter un produit cartésien, toujours insérer une condition de jointure correcte dans la clause WHERE.

• On obtient un produit cartésien lorsque :

– Une condition de jointure est omise

– Une condition de jointure est incorrecte

• Toutes les lignes de la première table sont jointes à toutes les lignes de la seconde

• Pour éviter un produit cartésien, toujours insérer une condition de jointure correcte dans la clause WHERE.

Page 6: Afficher des Données  Issues de Plusieurs Tables

4-6 Copyright Oracle Corporation, 1998. Tous droits réservés.

Génération d'un Produit CartésienGénération d'un Produit Cartésien

ENAME DNAME------ ----------KING ACCOUNTINGBLAKE ACCOUNTING ...KING RESEARCHBLAKE RESEARCH...56 rows selected.

ENAME DNAME------ ----------KING ACCOUNTINGBLAKE ACCOUNTING ...KING RESEARCHBLAKE RESEARCH...56 rows selected.

EMP (14 lignes) EMP (14 lignes) DEPT (4 lignes) DEPT (4 lignes)

EMPNO ENAME ... DEPTNO------ ----- ... ------ 7839 KING ... 10 7698 BLAKE ... 30 ... 7934 MILLER ... 10

EMPNO ENAME ... DEPTNO------ ----- ... ------ 7839 KING ... 10 7698 BLAKE ... 30 ... 7934 MILLER ... 10

DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON

DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON

"Produit "Produit cartésien : cartésien :

14*4=56 lignes"14*4=56 lignes"

Page 7: Afficher des Données  Issues de Plusieurs Tables

4-7 Copyright Oracle Corporation, 1998. Tous droits réservés.

Types de JointuresTypes de Jointures

EquijointureEquijointure Non-équijointureNon-équijointure

Jointure externeJointure externe AutojointureAutojointure

Page 8: Afficher des Données  Issues de Plusieurs Tables

4-8 Copyright Oracle Corporation, 1998. Tous droits réservés.

Qu'est-ce qu'une Equijointure ?Qu'est-ce qu'une Equijointure ?EMP EMP DEPT DEPT EMPNO ENAME DEPTNO------ ------- ------- 7839 KING 10 7698 BLAKE 30 7782 CLARK 10 7566 JONES 20 7654 MARTIN 30 7499 ALLEN 30 7844 TURNER 30 7900 JAMES 30 7521 WARD 30 7902 FORD 20 7369 SMITH 20...14 rows selected.

DEPTNO DNAME LOC ------- ---------- -------- 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 20 RESEARCH DALLAS 20 RESEARCH DALLAS...14 rows selected.

Clé étrangèreClé étrangère Clé primaireClé primaire

Page 9: Afficher des Données  Issues de Plusieurs Tables

4-9 Copyright Oracle Corporation, 1998. Tous droits réservés.

Extraction d'Enregistrements avec les Equijointures

Extraction d'Enregistrements avec les Equijointures

SQL> SELECT emp.empno, emp.ename, emp.deptno, 2 dept.deptno, dept.loc 3 FROM emp, dept 4 WHERE emp.deptno=dept.deptno;

EMPNO ENAME DEPTNO DEPTNO LOC----- ------ ------ ------ --------- 7839 KING 10 10 NEW YORK 7698 BLAKE 30 30 CHICAGO 7782 CLARK 10 10 NEW YORK 7566 JONES 20 20 DALLAS...14 rows selected.

Page 10: Afficher des Données  Issues de Plusieurs Tables

4-10 Copyright Oracle Corporation, 1998. Tous droits réservés.

Différencier les Noms de Colonne Ambigus

Différencier les Noms de Colonne Ambigus

• Préfixer avec le nom de la table pour différencier les noms de colonnes appartenant à plusieurs tables.

• Ces préfixes de table améliorent les performances.

• Différencier des colonnes de même nom appartenant à plusieurs tables en utilisant des alias de colonne.

• Préfixer avec le nom de la table pour différencier les noms de colonnes appartenant à plusieurs tables.

• Ces préfixes de table améliorent les performances.

• Différencier des colonnes de même nom appartenant à plusieurs tables en utilisant des alias de colonne.

Page 11: Afficher des Données  Issues de Plusieurs Tables

4-11 Copyright Oracle Corporation, 1998. Tous droits réservés.

Ajout de Conditions de Recherche avec l'Opérateur AND

Ajout de Conditions de Recherche avec l'Opérateur AND

EMP EMP DEPT DEPT EMPNO ENAME DEPTNO------ ------- ------- 7839 KING 10 7698 BLAKE 30 7782 CLARK 10 7566 JONES 20 7654 MARTIN 30 7499 ALLEN 30 7844 TURNER 30 7900 JAMES 30 7521 WARD 30 7902 FORD 20 7369 SMITH 20...14 rows selected.

DEPTNO DNAME LOC ------ --------- -------- 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 20 RESEARCH DALLAS 20 RESEARCH DALLAS...14 rows selected.

Page 12: Afficher des Données  Issues de Plusieurs Tables

4-12 Copyright Oracle Corporation, 1998. Tous droits réservés.

Utilisation d'Alias de TableUtilisation d'Alias de Table

Simplifiez les requêtes avec les aliasSimplifiez les requêtes avec les alias

de table.de table.

Simplifiez les requêtes avec les aliasSimplifiez les requêtes avec les alias

de table.de table.SQL> SELECT emp.empno, emp.ename, emp.deptno,

2 dept.deptno, dept.loc

3 FROM emp, dept

4 WHERE emp.deptno=dept.deptno;

SQL> SELECT e.empno, e.ename, e.deptno,

2 d.deptno, d.loc

3 FROM emp e, dept d

4 WHERE e.deptno=d.deptno;

Page 13: Afficher des Données  Issues de Plusieurs Tables

4-13 Copyright Oracle Corporation, 1998. Tous droits réservés.

Jointures de Plus de Deux TablesJointures de Plus de Deux Tables

NAME CUSTID----------- ------JOCKSPORTS 100TKB SPORT SHOP 101VOLLYRITE 102JUST TENNIS 103K+T SPORTS 105SHAPE UP 106WOMENS SPORTS 107... ...9 rows selected.

NAME CUSTID----------- ------JOCKSPORTS 100TKB SPORT SHOP 101VOLLYRITE 102JUST TENNIS 103K+T SPORTS 105SHAPE UP 106WOMENS SPORTS 107... ...9 rows selected.

CUSTOMER CUSTOMER

CUSTID ORDID------- ------- 101 610 102 611 104 612 106 601 102 602 106 604 106 605... 21 rows selected.

CUSTID ORDID------- ------- 101 610 102 611 104 612 106 601 102 602 106 604 106 605... 21 rows selected.

ORD ORD

ORDID ITEMID------ ------- 610 3 611 1 612 1 601 1 602 1...64 rows selected.

ORDID ITEMID------ ------- 610 3 611 1 612 1 601 1 602 1...64 rows selected.

ITEM ITEM

Page 14: Afficher des Données  Issues de Plusieurs Tables

4-14 Copyright Oracle Corporation, 1998. Tous droits réservés.

Non-EquijointuresNon-EquijointuresEMPEMP SALGRADESALGRADE

"Les salaires (SAL) de la table "Les salaires (SAL) de la table EMP sont compris entre le EMP sont compris entre le salaire minimum (LOSAL) et le salaire minimum (LOSAL) et le salaire maximum (HISAL) de la salaire maximum (HISAL) de la table SALGRADE"table SALGRADE"

EMPNO ENAME SAL------ ------- ------ 7839 KING 5000 7698 BLAKE 2850 7782 CLARK 2450 7566 JONES 2975 7654 MARTIN 1250 7499 ALLEN 1600 7844 TURNER 1500 7900 JAMES 950...14 rows selected.

GRADE LOSAL HISAL----- ----- ------1 700 12002 1201 14003 1401 20004 2001 30005 3001 9999

Page 15: Afficher des Données  Issues de Plusieurs Tables

4-15 Copyright Oracle Corporation, 1998. Tous droits réservés.

Extraction d'Enregistrements avec les Non-Equijointures

Extraction d'Enregistrements avec les Non-Equijointures

ENAME SAL GRADE---------- --------- ---------JAMES 950 1SMITH 800 1ADAMS 1100 1...14 rows selected.

SQL> SELECT e.ename, e.sal, s.grade

2 FROM emp e, salgrade s

3 WHERE e.sal

4 BETWEEN s.losal AND s.hisal;

Page 16: Afficher des Données  Issues de Plusieurs Tables

4-16 Copyright Oracle Corporation, 1998. Tous droits réservés.

Jointures ExternesJointures Externes

EMP EMP DEPT DEPT

Pas d'employés dans le Pas d'employés dans le département OPERATIONSdépartement OPERATIONS

ENAME DEPTNO----- ------KING 10BLAKE 30CLARK 10JONES 20...

DEPTNO DNAME------ ----------10 ACCOUNTING30 SALES10 ACCOUNTING20 RESEARCH...40 OPERATIONS

Page 17: Afficher des Données  Issues de Plusieurs Tables

4-17 Copyright Oracle Corporation, 1998. Tous droits réservés.

Jointures ExternesJointures Externes

• Les jointures externes permettent de visualiser des lignes qui ne répondent pasà la condition de jointure.

• L'opérateur de jointure externe est le signe (+).

• Les jointures externes permettent de visualiser des lignes qui ne répondent pasà la condition de jointure.

• L'opérateur de jointure externe est le signe (+).

SELECT table.column, table.column

FROM table1, table2

WHERE table1.column(+) = table2.column;

SELECT table.column, table.column

FROM table1, table2

WHERE table1.column(+) = table2.column;

SELECT table.column, table.column

FROM table1, table2

WHERE table1.column = table2.column(+);

SELECT table.column, table.column

FROM table1, table2

WHERE table1.column = table2.column(+);

Page 18: Afficher des Données  Issues de Plusieurs Tables

4-18 Copyright Oracle Corporation, 1998. Tous droits réservés.

Utilisation des Jointures Externes

Utilisation des Jointures Externes

SQL> SELECT e.ename, d.deptno, d.dname

2 FROM emp e, dept d

3 WHERE e.deptno(+) = d.deptno

4 ORDER BY e.deptno;

ENAME DEPTNO DNAME---------- --------- -------------KING 10 ACCOUNTINGCLARK 10 ACCOUNTING... 40 OPERATIONS15 rows selected.

Page 19: Afficher des Données  Issues de Plusieurs Tables

4-19 Copyright Oracle Corporation, 1998. Tous droits réservés.

AutojointuresAutojointures

EMP (WORKER)EMP (WORKER) EMP (MANAGER)EMP (MANAGER)

"Dans la table WORKER, MGR équivaut à EMPNO "Dans la table WORKER, MGR équivaut à EMPNO dans la table MANAGER" dans la table MANAGER"

EMPNO ENAME MGR----- ------ ---- 7839 KING 7698 BLAKE 7839 7782 CLARK 7839 7566 JONES 7839 7654 MARTIN 7698 7499 ALLEN 7698

EMPNO ENAME----- --------

7839 KING 7839 KING 7839 KING 7698 BLAKE 7698 BLAKE

Page 20: Afficher des Données  Issues de Plusieurs Tables

4-20 Copyright Oracle Corporation, 1998. Tous droits réservés.

Liaison d'une Table à Elle-mêmeLiaison d'une Table à Elle-même

WORKER.ENAME||'WORKSFOR'||MANAG-------------------------------BLAKE works for KINGCLARK works for KINGJONES works for KINGMARTIN works for BLAKE...13 rows selected.

WORKER.ENAME||'WORKSFOR'||MANAG-------------------------------BLAKE works for KINGCLARK works for KINGJONES works for KINGMARTIN works for BLAKE...13 rows selected.

SQL> SELECT worker.ename||' works for '||manager.ename

2 FROM emp worker, emp manager

3 WHERE worker.mgr = manager.empno;

Page 21: Afficher des Données  Issues de Plusieurs Tables

4-21 Copyright Oracle Corporation, 1998. Tous droits réservés.

RésuméRésumé

EquijointureEquijointure

Non-équijointureNon-équijointure

Jointure externeJointure externe

AutojointureAutojointure

SELECT table.column, table.columnFROM table1, table2WHERE table1.column1 = table2.column2;

SELECT table.column, table.columnFROM table1, table2WHERE table1.column1 = table2.column2;