• Aucun résultat trouvé

Petit guide pour les travaux pratiques. Petit guide 5 (.pdf)

N/A
N/A
Protected

Academic year: 2022

Partager "Petit guide pour les travaux pratiques. Petit guide 5 (.pdf)"

Copied!
5
0
0

Texte intégral

(1)

SGBD 2er année SeRéCom 18 02 2006 Travaux Pratiques

Petit guide 5

Thème d’approfondissement : Les requêtes de jointures

(P. Ferré)

I) Votre travail, à ce point de nos avancées

A) Le modèle est vérifié et stabilisé !

Faisant le tour des postes, je peux affirmer qu’un modèle sur deux n’est pas vérifié, ou est incomplet. Il convient de finaliser une version stable, en ayant à l’esprit que la suite et le fonctionnement du SGBD en dépendent.

B) Les requêtes SQL, dont la syntaxe est traitée dans l’un des précédents documents sont maîtrisées. Je serais sur ce point intransigeant. Certains, peu nombreux, en sont encore à poser la question d’une requête qui se trouve être illustrée et expliquée d’un exemple dans deux des trois petits guides. Vous devez savoir manipuler ces requêtes qui se trouvent être très simples.

II) Le modèle stabilisé permet des requêtes SQL et Php / SQL:

A) L’extractions de données (fiches à visualiser) / éditer / mettre à jour

B) Le couplage avec le langage de script php, permet la connexion avec le SGBD

C) Ce même couplage, php et sql, permet l’affichage des pages .html générées par le php.

Ce qui est dit ci-dessus est un minimum à maîtriser pour pouvoir continuer

D) En croisant le travail que vous avez réalisé en php avec mon collègue Marco Wincker, il ne serait pas concevable que vous ne sachiez pas interpeller une base de données pour en afficher des fiches et des médias (images entre autre) à l’aide du langage php couplé aux instructions php.

Tout a plus, l’un ou l’autre des deux enseignants a appuyé tel ou tel aspect. Mais, les connaissances posées sont complémentaires et coordonnées.

Il vous appartient, quand une solution vous paraît plus adéquate, de choisir entre les deux propositions (celle vue en php (en priorité) ou celle vue en SGBD)

III) L’interface avec un client Web

1) Se connecter à la base (Voir le précédent petit guide, et le cours de php pour les solutions alternatives.

2) Passer les requête, en SQL lancées par php : Ces dernières étant encapsulées dans une fonction. La chose est considérée être à ce point acquise. Inspirez-vous du précédent petit guide 3) L’affichage de la page, même cause même effet, le script étudié précédemment permet l’affichage d’une table, sans critère particulier pour l’instant.

(2)

4) Ce que nous allons approfondir : les requêtes de jointure, sous deux formes particulières a) Les requêtes de jointures interpellant plusieurs tables. La clause WHERE.

Nous avons délaissé le passage de critères qui permettent la sélection d’un sous-ensemble sur un critère donné ou plusieurs. Le principe est simple, déjà évoqué en cours et dans un petit guide. Dans le cas d’une jointure de plusieurs tables, la clause qui fixe un ou plusieurs critères se combine au fait que nous interpellons plusieurs tables. Exemple extraire des données de la table « opérateurs » et des données les médias qu’il à réaliser :

* Exemple sur plusieurs tables (soit une jointure)

/* Exemple de jointure sur quatres tables: Le résultat escompté est le suivant, Afficher les nom, prénoms des OPERATEURS, le libellé des MEDIAS, les PRETS de MATERIEL */

SELECT operateurs.ID, operateurs.Nom, operateurs.Prenom, medias.Libelle, prets.DateRestitution,

materiels.*

FROM operateurs, medias, prets, materiels /* Le critèrem L'égalité de valeurs des clés primaires et des clés ETRANGERES de la TABLE fournissant les x

occurences */

WHERE operateurs.ID = medias.ID_operateur

AND medias.ID = prets.ID_Medias AND prets.ID_Materiel = materiels.ID

Cela marche, et vous pouvez tenter des variations, n’interpeller que deux tables, voire même toutes les tables.

(3)

* Exemple quasi identique, mais en escomptant retourner, les mêmes informations mais ne concernant qu’un seul opérateur, identifié par son nom

/* Exemple de jointure sur quatre tables: Le résultat escompté est le suivant, Afficher les nom, prénoms des OPERATEURS, le libellé des MEDIAS, les PRETS de MATERIEL pour l’opérateur Pauline Abadie */

SELECT operateurs.ID, operateurs.Nom, operateurs.Prenom, medias.Libelle, prets.DateRestitution,

materiels.*

FROM operateurs, medias, prets, materiels /* Le critère L'égalité de valeurs des clés primaires et des clés ETRANGERES de la TABLE fournissant les x occurrences

*/WHERE operateurs.ID = medias.ID_operateur

AND medias.ID = prets.ID_Medias AND prets.ID_Materiel = materiels.ID AND operateurs.Nom = 'abadie' AND operateurs.Prenom = 'Pauline'

Cela marche aussi, merci Pauline.

b) Subtilités des jointures LEFT, RIGHT

Deux « nuances » de jointures peuvent être étudiées maintenant. Avec un exemple visuel, pour commencer. Si nous posons en SQL l’instruction suivante, nous escomptons obtenir de la base qu’elle interroge les tables suivantes : « opérateurs », « médias », « prêts » et que soit retourné les noms, prénoms des opérateurs, les libellés des médias et les médias qui sont des photos (nom des photos) réalisées par les opérateurs, ainsi que les emprunts de matériels qui ont été nécessaires Comme ci-dessous :

(4)

/* Soit à extraire de la base, les noms et prenoms des opérateurs, les médias réalisés, les matériels

empruntés pour réalisers ces médias */

select DISTINCT operateurs.Nom, operateurs.Prenom, medias.Libelle, medias.Photographie,

prets.*

from medias

LEFT JOIN operateurs ON operateurs.ID = medias.ID_Operateur LEFT JOIN prets ON medias.ID = prets.ID_Medias

WHERE prets.ID is not null ORDER BY operateurs.Nom

Résultat, qui ne contient que les médias réalisés ayant nécessité l’emprunt de matériel, cela du fait du critère Where prets.ID is not nul.

Bien entendu la requête fonctionne sous DbDesigner, avec un visuel des table qui peut-être permet une meilleure perceptions des champs de part le schémas des tables à la mode MERSIE. En conséquence de quoi, choisissez l’outils qui vous convient le mieux. L’essentiel est que le résultat soit au rendez-vous.

Voir page suivante :

(5)

Vous aurez notez que ces requêtes SQL, sont gérables avec php, par inclusion de la requête en paramètre de la fonction mysql_query ($requete).

Nous aurions donc :

$requete = “select DISTINCT operateurs.Nom, operateurs.Prenom, medias.Libelle, medias.Photographie, prets.* from medias LEFT JOIN operateurs ON operateurs.ID = medias.ID_Operateur LEFT JOIN prets ON medias.ID = prets.ID_Medias WHERE

prets.ID is not null ORDER BY operateurs.Nom”;

$resultat = mysql_query ($requete);

if ($resultat) {while …

{} }

A ce stade il reste à travailler, à partir des exemples, et des petits guides soit à suivre un travail guidé pas à pas

Bon courage

Références

Documents relatifs

- La gestion des supports des médias réalisés, (notez que le support peut être un flux sonore) - La gestion des thèmes dont les médias traitent.. - La gestion des « intervenants

Pour renommer une table, renommer une propriété ou modifier les caractéristiques d’une propriété, ou encore créer une propriété inexistante et l’insérer à l’endroit voulu,

Une société a un ou plusieurs salariés. Chacun d’entre eux réalise un ou plusieurs travaux. Ces travaux faisant l’objet de médiatisation un formulaire

Au menu du quatrième petit guide de nos travaux dirigés, la mise en œuvre d’une base en tous points similaire à celle que nous avons réalisée sous Access. Sauf le fait, que

La contrainte du cours traditionnel est similaire. Il faut au moins un enseignant pour assurer un cours, sans quoi le cours ne peut avoir lieu. Nous venons donc de gérer des

Ce qui est important réside dans le rôle des clés. Où, c’est pas égalité de valeur des clés que sont retrouvés lors d’une requêtes les stages qui sont en relation avec

Le dernier petit guide, vous donne l’essentiel des étapes que doit parcourir un script php (ou autre langage) pour générer une page html interagissant avec la base de données Mysql...

Cela permet de surveiller tout le trafic réseau entre le client et le serveur, et de le modifier à sa guise pour l'obtention d'informations (mots de passe, accès système, etc.)..