Cours 10
REQUÊTES SPÉCIALISÉES


Nouvelles tables


Les exemples qui suivent utilisent les tables 'Books' et 'BookAuthor' de la base de données BookStor.

Créez les tables Books et BookAuthor dans la base MySQL en copiant la structure de la table Access.

Transférez les données de chaque table en Access à la table en MySQL en utilisant la même technique que pour la table Authors.


Quelques SELECT simples:

















Le "LEFT JOIN"


Dans l'exemple de jointure ci-haut, le SELECT retourne 25 lignes. Il y a 25 auteurs qui ont un livre dans la table BOOKAUTHOR. Mais il y a 90 auteurs. Cela veut dire qu'un bon nombre d'auteurs n'ont pas de livre publié en ce moment.

Si je veux la liste des auteurs qui n'ont pas de livre il faut que j'utilise un SELECT différent.

Le JOIN normal retourne toujours seulement les lignes où table1.colonne = table2.colonne.

Le LEFT JOIN a la structure suivante:

SELECT col1, col2, col3
FROM table1 LEFT JOIN table2
ON clé1 = clé2


ce qui a pour résultat de prendre toutes les lignes de la table nommée à la gauche du JOIN (table1), même celles qui n'ont pas de 'match' dans la table de droite (table2).



Affichez la liste de tous les auteurs et le titre de leur livre, incluant les auteurs qui n'ont pas publié de livre:





Remarquez que ba_book est 'NULL' dans beaucoup de cas.

Si on vous demandait d'afficher la liste de tous les auteurs qui n'ont pas de livre, il suffit de changer juste un peu le SELECT:





Et si on veut un peu plus d'information, il faut aussi joindre la table BOOKS avec un deuxième LEFT JOIN:








Un système de rendez-vous simple


Il faut d'abord créer une table pour les périodes de temps disponibles:

create table agenda(lineno bigint not null auto_increment primary key,
agdate date, agtime time, client varchar(11), subject varchar(20),
index(agdate))



Ensuite il faut trouver un moyen d'entrer toutes les valeurs dans la table 'Agenda'. La meilleure façon serait de créer un fichier .txt avec VB, par exemple et ensuite utiliser LOAD DATA ... pour remplir la table.

Pour tester, utiliser un INSERT ... ce qui donne:











Pour créer un rendez-vous:

update agenda set client = '172-32-1176', subject = 'new book '
where lineno = 5

update agenda set client = '124-08-9931', subject = 'increase salary again'
where lineno = 7



Pour voir les rendez-vous:







Haut de la page