EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/2005 - page 1 SQL jointure PHILIPPE BANCQUART.

Slides:



Advertisements
Présentations similaires
Bureautique Excel-VBA et Access – Cours 2 Dominante Économie et Gestion dEntreprise AgroParisTech Année Liliana IBANESCU et Laurent ORSEAU UFR.
Advertisements

1 1 Momentum. 2 2 Tout objet en mouvement continuera son mouvement tant que rien nentrave sa progression.
1 V-Ingénierie… La compétence au service de lexigence… vous présente.
SQL - Subtilités.
Algèbre relationnelle
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Les fonctions.
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
LMD: Langage de Manipulation de Données
Développement d’applications web
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
Contrôles d'accès aux données
L’utilisation des bases de données
Regrouper les Données avec les Fonctions de Groupe
2 Ils associent les rangées de 2 requêtes UNION [ALL] INTERSECT MINUS.
Les requêtes Les requêtes permettent dinterroger une base de données suivant 3 opérateurs : La projection Affiche le contenu dun champ complet En langage.
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
SQL Partie 3 : (LID : Langage d'interrogation de données)
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL PHILIPPE BANCQUART.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
SQL: Contraintes et Triggers
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
Cours N°2 Base de Données & Langage SQL
1 SQL Manipulations Avancées (08-09) Witold Litwin.
Manipulation des données Requêtes simples
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 CSI 2532 Lab3 6 Février 2012 Programmation avancée SQL.
Initiation aux bases de données et à la programmation événementielle
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Gestion des transactions SQLServer.
Limiter et trier des données
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Architecture des Mico-Ordinateurs PHILIPPE BANCQUART.
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
1 Modèle pédagogique d’un système d’apprentissage (SA)
Chapitre 5 : Le langage SQL
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
01. Liste des noms de candidats avec leur date de naissance.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Transac SQL Intégrité des données.
Traduction des opérations sous MySQL
Access Les requêtes Table médias Table (*) Requêtes simples.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Université de Sherbrooke
Cours 5: Sous requetes Exploitation des données Présentation  Supposez que vous voulez écrire une requête pour trouver qui a un salaire plus.
MonACCÈS-École Guide n° 3 Formation initiale. Apprendre à utiliser les commandes de recherche; Recherche composée; Sélection d’élèves; Recherche en utilisant.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Sous-Interrogations.
Module 7 : Utilisation de requêtes élaborées
Sélection de colonnes (la projection)
SQL : Langage de Manipulation des données
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Le langage SQL. Voir polycopié: Introduction à SQL SQL.
Les bases de données Séance 8 Jointures.
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
Le Langage d ’ Interrogation des donn é es (LID) Module 2.
Les vues, indexes, séquences.  Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base.
Le Langage de Manipulation de Données LMD Module 6.
1 Les bases de données Séance 6 L ’extraction de données Le SELECT.
Manipulation D’Une Base De Données
Transcription de la présentation:

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 2 Jointure L’opération de jointure recherche des données provenant d’au moins de deux tables. La jointure est le point de contrôle du modèle fonctionnel Elle combine les tables en faisant correspondre des valeurs présentes dans chaque table.

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 3 jointure

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 4 Quelles tables utiliser Choisir les colonnes Utiliser le schema BD Suivre les lignes de relation. Sales.stor_id = stores.stor_id

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 5 Opérations de jointure Les lignes de relation permettent de trouver la jointure qui va permettre de connecter les tables. Exemple relier les éditeurs avec les magasins de ventes. 4 tables dont 2 pour les relations. Stores,sales,titles,publishers

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 6 Opérations de jointure

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 7 Opération de jointure Select [Table.]nomColonne, […] from { table},{ table}[, …] where conditionRecherche WHERE est impératif Pas de jointure sur les valeurs nulles Les colonnes qui portent le même nom dans plusieurs tables doivent être précédées d’un nom de table.

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 8 exercices 1. Liste des livres vendus par magasin Afficher : pub_name, pub_id, title table : publishers, titles 2. Lister les magasins et la quantité de livres qu’ils ont commandée (qty) par titre Afficher : stor_name, stor_id, qty,title table : sales, stores

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 9 exercices 1. select pub_name, publishers.pub_id, title_id from publishers, titles where publishers.pub_id = titles.pub_id 2. select stor_name, stores.stor_id, qty,title_id from sales, stores where sales.stor_id = stores.stor_id

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 10 Jointures avec order by et group by Affichage du revenu total par livre chaque fois qu’il est commandé. select titles.title_id, qty, price, price * qty as 'prix total' from titles, sales where titles.title_id = sales.title_id order by price * qty Affichage du nombre de livres commandé par chaque magasin select stor_name, sales.stor_id, sum(qty) from sales, stores where sales.stor_id = stores.stor_id group by stor_name, sales.stor_id

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 11 ALIAS Pour éviter de taper le nom de la table de façon repétée, on affecte un ALIAS Afficher le nom de l’éditeur, code du titre lorsque la valeur pub_id du livre = pub_id editeur et le prix 19,99€ select pub_name, title_id from titles t, publishers p where t.pub_id = p.pub_id and price = 19.99

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 12 Alias Liste des magasins ayant commandé moins de 35 exemplaires d’un livre. select stor_name, qty, title_id from sales s, stores m where s.stor_id = m.stor_id and qty < 35

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 13 Jointure de plus de 2 tables La clause FROM fournit la liste de toutes les tables impliquées dans la requêtes La clause where doit comporter un nombre suffisant de condition de join pour établir une connexion avec toute les tables

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 14 Jointure de plus de 2 tables Afficher le nom de l’auteur et celui de chacun de ses livres. select au_fname, title from authors a, titleauthor ta, titles t where a.au_id = ta.au_id and ta.title_id = t.title_id

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 15 Jointure de plus de 2 tables Afficher titre du livre et du nom du magasin où le livre est répertorié comme vendu. select stor_name,title from titles t, sales s, stores m where t.title_id = s.title_id and s.stor_id = m.stor_id

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 16 Sous requêtes Exp : quels sont les livres oubliés par ‘'New Moon Books' ? 1. Trouvez la pub_id associé à ‘new age books’ select pub_id, pub_name from publishers where pub_name = 'New Moon Books'  Trouvez les titres de livres associés aux pub_id trouvé. Select title from titles where pub_id = 0736 Utilisez une sous requête pour le même résultat

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 17 Sous requêtes Exp : quels sont les livres oubliés par 'New Moon Books' habituel Select title from titles,publishers where titles.pub_id = publishers.pub_id and publishers.pub_name = 'New Moon Books' Sous requêtes select title from titles where pub_id = (select pub_id from publishers where pub_name = 'New Moon Books' )

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 18 Sous requêtes Une sous requêtes est une instruction select utilisé en tant qu’expression au sein d’une autre instruction select, update, insert, delete. La sous requête select imbriquée est résolue et il y a substitution du résultat au sein de la clause where. Elles sont plus faciles à comprendre qu’une jointure Utile pour les agregats impossible avec jointure.

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 19 Sous requêtes Si la clause where comporte un nom d e colonne, elle doit impérativement être compatible avec la colonne spécifié. Une sous requête ne peut pas comporter de clauses ORDER BY ou compute ainsi que INTO Le DISTINCT ne peut pas être utilisé avec des sous requêtes comportant un group by

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 20 Sous requêtes Il n’y a pas de limite d’imbrication. Afficher le titre du livre écrit par Blocher-halls select title from titles where titles.title_id = ( select title_id from titleauthor where dbo.titleauthor.au_id = ( select au_id from dbo.authors where au_lname = 'Blotchet-Halls' ))

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 21 Sous requêtes plusieurs lignes Si la sous requêtes retournent plusieurs lignes alors utiliser IN Afficher les livres vendus en Californie select distinct stor_id, sales.title_id from dbo.sales, titles where stor_id in ( select stor_id from stores where state = 'CA') and titles.title_id = sales.title_id

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 22 Sous requêtes avec comparaison Des sous requêtes peuvent effectuer des tâches qui sont impossibles avec les clauses de jointure/ Une clause where dans une instruction select ne peut pas comporter d’agrégat Une sous requête peut en contenir

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 23 Sous requêtes avec comparaison Listes des livres dont le prix depasse le prix moyen de l’ensemble des livres. select title_id, price from titles where price > avg(price) --Erreur select title_id, price from titles where price > (select avg(price) from titles)

EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 24 Sous requêtes opérateurs de comparaison Afficher les livres qui ont reçu une avance supérieure à la l’avance minimum payée par Algodata Infosystems select distinct title, advance from titles where advance > ( select min(advance) from titles, publishers where publishers.pub_id = titles.pub_id and pub_name = 'Algodata Infosystems')