Skip to content
Snippets Groups Projects
Commit 612dcdbb authored by Vincent Namy (EDU_GE)'s avatar Vincent Namy (EDU_GE)
Browse files

Rename files

parent 0dc84df4
Branches
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
<div style="padding:20px;background-color:papayawhip;" >
<h3 style="color:chocolate"> <i class="fa fa-info" aria-hidden="true"> </i> &nbsp; Remarque introductive &nbsp; <i class="fa fa-info" aria-hidden="true"></h3>
<p> Ce fichier est fait pour être lu sur le site <a href="https://notebook.basthon.fr/"><img src='https://notebook.basthon.fr/assets/efede5218c9087496f16.png' style="border: 0; display:inline; margin: 0 5px; height:30px" alt="Basthon"/></a>. <br>
Si vous l'avez ouvert avec un autre programme, comme Jupyter notebook, vous riquez de rencontrer quelques bugs. <br>
Veuillez cliquez sur <a href="https://notebook.basthon.fr/">ce lien</a> et y charger ce fichier à l'aide du bouton "Ouvrir" &nbsp; <i class="fa fa-folder" aria-hidden="true"> </i>
</p>
</div>
%% Cell type:markdown id: tags:
# Activité 1: Premier pas avec les données
%% Cell type:markdown id: tags:
Nous allons utiliser LibreOffice Calc (tableur) pour rechercher des informations dans un fichier contenant les données des médailles olympiques de 1976 à 2008.
- Télécharger le fichier Olympics1976-2008.ods [Olympics1976-2008.ods](https://githepia.hesge.ch/info_sismondi/activites-2in-do/-/raw/main/Notebooks/Olympics1976-2008.ods)
- Ouvrir le fichier avec LibreOffice Calc.
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Question </h3>
```
Déterminer le nombre de ligne (astuce: utiliser les touches ctrl + ↓ pour aller à la dernière ligne)
```
</div>
%% Cell type:raw id: tags:
Réponse:
%% Cell type:markdown id: tags:
<details>
<summary style="border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8">
Solution
</summary>
<div style="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">
15316
</div>
</details>
%% Cell type:markdown id: tags:
Sélectionner la première ligne et appliquer un autofiltre:
![copie d'écran](https://githepia.hesge.ch/info_sismondi/activites-2in-do/-/raw/main/Notebooks/img/copie_ecran_01.png)
%% Cell type:markdown id: tags:
Vous devriez voir apparaître les symboles suivants:
![copie d'écran](https://githepia.hesge.ch/info_sismondi/activites-2in-do/-/raw/main/Notebooks/img/copie_ecran_02.png)
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Question</h3>
```
Déterminer combien de médailles ont été gagnées par des athlètes Suisse entre 2000 et 2008 ?
```
</div>
%% Cell type:raw id: tags:
Réponse:
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Question</h3>
```
Déterminer combien de médailles ont été gagnées par des athlètes Suisse entre 2000 et 2008 en Triathlon ?
```
</div>
%% Cell type:raw id: tags:
Réponse:
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Question</h3>
```
Déterminer le nombre de pays ayant remporté des médailles d’athlétisme à l'événement “4x400 relay” durant les jeux olympiques de Barcelone (1992).
```
</div>
%% Cell type:raw id: tags:
Réponse:
%% Cell type:markdown id: tags:
### Conclusion:
Dans un tableur, les filtres nous permettent de faire ressortir assez facilement des lignes qui nous intéressent, mais nous sommes limités dans les possibilités de recherche. De plus, si le fichier comporte plusieurs millions de champs, les tableurs auront beaucoup de difficultés à ouvrir et charger l’ensemble des données !
Maintenant ouvrons, le tableau des médailles à l’aide d’une base de données…
%% Cell type:markdown id: tags:
<div style="padding:20px;background-color:papayawhip;" >
<h3 style="color:chocolate"> <i class="fa fa-info" aria-hidden="true"> </i> &nbsp; Remarque introductive &nbsp; <i class="fa fa-info" aria-hidden="true"></h3>
<p> Ce fichier est fait pour être lu sur le site <a href="https://notebook.basthon.fr/"><img src='https://notebook.basthon.fr/assets/efede5218c9087496f16.png' style="border: 0; display:inline; margin: 0 5px; height:30px" alt="Basthon"/></a>. <br>
Si vous l'avez ouvert avec un autre programme, comme Jupyter notebook, vous riquez de rencontrer quelques bugs. <br>
Veuillez cliquez sur <a href="https://notebook.basthon.fr/">ce lien</a> et y charger ce fichier à l'aide du bouton "Ouvrir" &nbsp; <i class="fa fa-folder" aria-hidden="true"> </i>
</p>
</div>
%% Cell type:markdown id: tags:
# Activité 1: Premier pas avec les données
%% Cell type:markdown id: tags:
Nous allons utiliser LibreOffice Calc (tableur) pour rechercher des informations dans un fichier contenant les données des médailles olympiques de 1976 à 2008.
- Télécharger le fichier Olympics1976-2008.ods [Olympics1976-2008.ods](https://githepia.hesge.ch/info_sismondi/activites-2in-do/-/raw/main/Notebooks/Olympics1976-2008.ods)
- Ouvrir le fichier avec LibreOffice Calc.
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Question </h3>
```
Déterminer le nombre de ligne (astuce: utiliser les touches ctrl + ↓ pour aller à la dernière ligne)
```
</div>
%% Cell type:raw id: tags:
Réponse:
%% Cell type:markdown id: tags:
<details>
<summary style="border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8">
Solution
</summary>
<div style="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">
15316
</div>
</details>
%% Cell type:markdown id: tags:
Sélectionner la première ligne et appliquer un autofiltre:
![copie d'écran](https://githepia.hesge.ch/info_sismondi/activites-2in-do/-/raw/main/Notebooks/img/copie_ecran_01.png)
%% Cell type:markdown id: tags:
Vous devriez voir apparaître les symboles suivants:
![copie d'écran](https://githepia.hesge.ch/info_sismondi/activites-2in-do/-/raw/main/Notebooks/img/copie_ecran_02.png)
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Question</h3>
```
Déterminer combien de médailles ont été gagnées par des athlètes Suisse entre 2000 et 2008 ?
```
</div>
%% Cell type:raw id: tags:
Réponse: 32
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Question</h3>
```
Déterminer combien de médailles ont été gagnées par des athlètes Suisse entre 2000 et 2008 en Triathlon ?
```
</div>
%% Cell type:raw id: tags:
Réponse: 3
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Question</h3>
```
Déterminer le nombre de pays ayant remporté des médailles d’athlétisme à l'événement “4x400 relay” durant les jeux olympiques de Barcelone (1992).
```
</div>
%% Cell type:raw id: tags:
Réponse: 4
%% Cell type:markdown id: tags:
### Conclusion:
Dans un tableur, les filtres nous permettent de faire ressortir assez facilement des lignes qui nous intéressent, mais nous sommes limités dans les possibilités de recherche. De plus, si le fichier comporte plusieurs millions de champs, les tableurs auront beaucoup de difficultés à ouvrir et charger l’ensemble des données !
Maintenant ouvrons, le tableau des médailles à l’aide d’une base de données…
%% Cell type:markdown id: tags:
# Leçon n°3: Gestion simplifiée d'un cinéma
%% Cell type:markdown id: tags:
## I) Modélisation d'une base de données
Nous allons modéliser une base de données qui gère les projections de films dans des salles de cinéma.
### 1. Description du modèle
La base de données doit gérer :
- **Les films** avec un numéro unique, un titre et une durée.
- **Les projections** qui ont un numéro unique et un tarif.
- **Les créneaux horaires** définis par une date et une heure de début.
- **Les salles** identifiées par un numéro et une capacité.
Ces entités sont liées entre elles par différentes **associations** :
- **Un film peut être projeté plusieurs fois** (relation `CONCERNE`).
- **Une projection a lieu à un seul créneau horaire**, mais un créneau peut ne pas contenir de projection (relation `AVOIR_LIEU_PENDANT`).
- **Une projection a lieu dans une seule salle**, mais une salle peut accueillir plusieurs projections (relation `AVOIR_LIEU_DANS`).
%% Cell type:markdown id: tags:
![copie d'écran](https://githepia.hesge.ch/info_sismondi/activites-2in-do/-/raw/main/Notebooks/img/BD_cours_n3_cinema_association_entite.png)
%% Cell type:markdown id: tags:
### 2. Explication des associations
##### CONCERNE (1,1 PROJECTION <--> 0,N FILM)
- Chaque **projection** est associée à **un seul film**.
- Un **film** peut être projeté plusieurs fois ou ne pas l'être du tout.
##### AVOIR_LIEU_PENDANT (0,N CRÉNEAU_HORAIRE <--> 1,1 PROJECTION)
- Chaque **projection** a lieu à **un unique créneau horaire**.
- Un **créneau horaire** peut ne contenir aucune projection ou en contenir plusieurs.
##### AVOIR_LIEU_DANS (1,1 PROJECTION <--> 0,N SALLE)
- Chaque **projection** a lieu dans **une seule salle**.
- Une **salle** peut accueillir plusieurs projections ou être vide.
%% Cell type:markdown id: tags:
En partant du modèle entité-association, on peut créer le modèle relationnel qui va nous permettre de créer la base de donnée.
%% Cell type:markdown id: tags:
![copie d'écran](https://githepia.hesge.ch/info_sismondi/activites-2in-do/-/raw/main/Notebooks/img/BD_cours_n3_cinema_schema_relationnel.png)
%% Cell type:markdown id: tags:
### 3. Rappel sur les clés primaires et clés étrangères 🔑
Dans une base de données relationnelle, les **clés primaires** et **clés étrangères** permettent d'établir des liens entre les tables.
#### 📌 **Clé primaire**
Une **clé primaire** est un attribut (ou un ensemble d’attributs) qui identifie **de manière unique** chaque ligne d’une table.
- Elle ne peut pas contenir de valeurs NULL.
- Elle doit être unique pour chaque ligne.
**Exemple :** Dans la table `FILM`, `Num_film` est une clé primaire car chaque film possède un identifiant unique. Elle est représentée par souligné dans le schéma.
```sql
CREATE TABLE FILM (
Num_film INTEGER NOT NULL PRIMARY KEY,
Titre VARCHAR(255),
Duree INTEGER
);
```
#### 📌 **Clé étrangère**
Une **clé étrangère** est un attribut qui établit une relation entre deux tables en faisant référence à la clé primaire d’une autre table. Elle est représenté par un # dans le schéma.
- Elle garantit l'intégrité des données : une clé étrangère ne peut contenir que des valeurs existantes dans la table référencée.
**Exemple :** Dans la table `PROJECTION`, `Num_film` est une clé étrangère qui fait référence à `Num_film` dans `FILM`.
```sql
CREATE TABLE PROJECTION (
Num_projection INTEGER NOT NULL PRIMARY KEY,
Tarif DECIMAL(10,2),
Num_creneau INTEGER NOT NULL,
Num_film INTEGER NOT NULL,
Num_salle INTEGER NOT NULL,
FOREIGN KEY (Num_salle) REFERENCES SALLE (Num_salle),
FOREIGN KEY (Num_film) REFERENCES FILM (Num_film),
FOREIGN KEY (Num_creneau) REFERENCES CRENEAU_HORAIRE (Num_creneau)
);
```
---
%% Cell type:markdown id: tags:
Le code suivant, permet de créer et insérer des données dans les différentes tables modélisées.
**Exécutez la cellule suivante (Ctrl+Enter) pour générer la base de données**
%% Cell type:code id: tags:
``` sql
-- Création des tables
CREATE TABLE CRENEAU_HORAIRE (
Num_creneau INTEGER NOT NULL PRIMARY KEY,
Date DATE,
Heure_de_debut TIME
);
CREATE TABLE FILM (
Num_film INTEGER NOT NULL PRIMARY KEY,
Titre VARCHAR(255),
Duree INTEGER
);
CREATE TABLE SALLE (
Num_salle INTEGER NOT NULL PRIMARY KEY,
Capacite INTEGER
);
CREATE TABLE PROJECTION (
Num_projection INTEGER NOT NULL PRIMARY KEY,
Tarif DECIMAL(10,2),
Num_creneau INTEGER NOT NULL,
Num_film INTEGER NOT NULL,
Num_salle INTEGER NOT NULL,
FOREIGN KEY (Num_salle) REFERENCES SALLE (Num_salle),
FOREIGN KEY (Num_film) REFERENCES FILM (Num_film),
FOREIGN KEY (Num_creneau) REFERENCES CRENEAU_HORAIRE (Num_creneau)
);
-- Insérer des valeurs dans CRENEAU_HORAIRE
INSERT INTO CRENEAU_HORAIRE (Num_creneau, Date, Heure_de_debut) VALUES
(1, '2025-02-10', '14:00'),
(2, '2025-02-10', '16:30'),
(3, '2025-02-10', '19:00'),
(4, '2025-02-11', '14:00'),
(5, '2025-02-11', '16:30'),
(6, '2025-02-12', '14:00'),
(7, '2025-02-12', '16:30'),
(8, '2025-02-12', '19:00');
-- Insérer des valeurs dans FILM
INSERT INTO FILM (Num_film, Titre, Duree) VALUES
(1, 'Inception', 148),
(2, 'Interstellar', 169),
(3, 'Avatar', 162),
(4, 'Titanic', 195),
(5, 'Joker', 122),
(6, 'The Dark Knight', 152),
(7, 'Pulp Fiction', 154),
(8, 'Forrest Gump', 142),
(9, 'The Matrix', 136),
(10, 'Gladiator', 155);
-- Insérer des valeurs dans SALLE
INSERT INTO SALLE (Num_salle, Capacite) VALUES
(1, 150),
(2, 200),
(3, 100),
(4, 180),
(5, 250),
(6, 300),
(7, 220),
(8, 130);
-- Insérer des valeurs dans PROJECTION
INSERT INTO PROJECTION (Num_projection, Tarif, Num_creneau, Num_film, Num_salle) VALUES
(1, 12.50, 1, 1, 1),
(2, 10.00, 2, 2, 2),
(3, 9.50, 3, 3, 3),
(4, 13.00, 4, 4, 4),
(5, 11.00, 5, 5, 5),
(6, 14.00, 6, 6, 6),
(7, 9.00, 7, 7, 7),
(8, 12.00, 8, 8, 8),
(9, 13.50, 1, 9, 3),
(10, 11.50, 2, 10, 4),
(11, 10.00, 3, 1, 5),
(12, 15.00, 4, 2, 6),
(13, 12.50, 5, 3, 7),
(14, 13.00, 6, 4, 8),
(15, 11.00, 7, 5, 1),
(16, 9.50, 8, 6, 2);
```
%% Cell type:markdown id: tags:
**Exécuter les requêtes suivantes (Ctrl+Enter)** pour afficher le contenu des différentes tables.
%% Cell type:code id: tags:
``` sql
SELECT * FROM FILM
```
%% Cell type:code id: tags:
``` sql
SELECT * FROM PROJECTION
```
%% Cell type:code id: tags:
``` sql
SELECT * FROM SALLE
```
%% Cell type:code id: tags:
``` sql
SELECT * FROM CRENEAU_HORAIRE
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 1 </h3>
Petite révision SQL (voir leçon précédente).
Écrire les requêtes SQL permettant d'extraire de cette base de données les informations qui suivent. Aidez-vous du Cheat sheet SQL remis en classe.
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
A) Affiche uniquement les titres et la durée des films.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
B) Affiche les films dont la durée est supérieure à 120 minutes.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
C) Affiche les films dont le titre contient la lettre "a".
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
D) Affiche toutes les projections avec leur numéro et leur tarif.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
E) Affiche toutes les projections qui ont lieu après 18h00.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
F) Affiche les projections qui auront lieu le 10 février 2025.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
G) Affiche les projections qui auront lieu le 10 février 2025.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
H) Affiche les salles qui ont une capacité de plus de 150 places.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
I) Affiche les films triés par ordre décroissant de durée.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
J) Affiche le nombre total de films dans la base de données.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
K) Affiche la durée moyenne des films.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
L) Affiche le film le plus long avec son titre et sa durée.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
M) Affiche le tarif le plus élevé et le plus bas parmi toutes les projections.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
📝 **Écris la requête SQL selon l'énoncé suivant:**
N) Affiche la capacité totale de toutes les salles. (i.e. Somme de toutes les places).
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:breakpoint
**Ctrl + Enter pour continuer**
%% Cell type:markdown id: tags:
## II) Expression conditionnelle avec un CASE
Comment afficher les salles avec une catégorie de capacité ?
- "Petite salle" si la capacité est inférieure à 100,
- "Moyenne salle" si elle est entre 100 et 200,
- "Grande salle" si elle est supérieure à 200.
==> En utilisant une expression conditionnelle CASE. Exécuter la requête suivante:
%% Cell type:code id: tags:
``` sql
SELECT Num_salle, Capacite,
CASE
WHEN Capacite < 100 THEN 'Petite salle'
WHEN Capacite BETWEEN 100 AND 200 THEN 'Moyenne salle'
ELSE 'Grande salle'
END AS Categorie
FROM SALLE;
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 2 : Expression conditionnelle avec un CASE </h3>
📝 **Écris la requête SQL selon l'énoncé suivant:**
En t'inspirant de l'exemple ci-dessus, affiche les projections avec une classification du tarif:
- "Tarif réduit" si le prix est inférieur à 10 CHF.
- "Tarif standard" si le prix est entre 10€ et 12 CHF.
- "Tarif premium" si le prix est supérieur à 12 CHF.
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:breakpoint
**Ctrl + Enter pour continuer**
%% Cell type:markdown id: tags:
## III) Les jonctions
### ❓ Comment trouver des informations qui se trouvent dans plusieurs tables ?
Lorsqu'on construit une base de données relationnelle, les informations sont souvent réparties dans plusieurs tables pour éviter les redondances et améliorer l'organisation des données.
Mais comment peut-on récupérer des données qui sont liées entre plusieurs tables ? C'est là qu'intervient le `INNER JOIN` !
---
### 📖 Introduction au INNER JOIN
Le `INNER JOIN` permet de combiner des lignes de deux tables lorsque les valeurs d'une colonne correspondent dans les deux tables.
Seules les lignes ayant une correspondance dans **les deux tables** sont retournées.
#### 📌 Syntaxe Générale :
```sql
SELECT colonne1, colonne2, ...
FROM Table1
INNER JOIN Table2
ON Table1.colonne_commune = Table2.colonne_commune;
```
---
%% Cell type:markdown id: tags:
### 🔎 Exemple 1 : Lister les projections avec leurs films associés
Nous avons deux tables :
- **`FILM`** (`Num_film`, `Titre`, `Durée`)
- **`PROJECTION`** (`Num_projection`, `Tarif`, `Num_film` → clé étrangère)
📌 **Énoncé :**
Affiche toutes les projections avec les titres et le tarif des films correspondants.
%% Cell type:code id: tags:
``` sql
SELECT PROJECTION.Num_projection, FILM.Titre, PROJECTION.Tarif
FROM PROJECTION
INNER JOIN FILM ON PROJECTION.Num_film = FILM.Num_film;
```
%% Cell type:markdown id: tags:
### 🔎 Exemple 2 : Lister les projections avec leurs créneaux horaires
Nous avons deux tables :
- **`PROJECTION`** (`Num_projection`, ``)
- **`CRENEAU_HORAIRE`** (`Num_creneau`, `Date_projection`, `Heure_de_debut`)
📌 **Énoncé :**
Affiche la liste des projections avec leur date et leur heure de début.
%% Cell type:code id: tags:
``` sql
SELECT PROJECTION.Num_projection, CRENEAU_HORAIRE.Date, CRENEAU_HORAIRE.Heure_de_debut
FROM PROJECTION
INNER JOIN CRENEAU_HORAIRE ON PROJECTION.Num_creneau = CRENEAU_HORAIRE.Num_creneau;
```
%% Cell type:markdown id: tags:
### ✍️ Exercices d’application
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 3 : Lister les projections avec les salles associées </h3>
Affiche toutes les projections avec **leurs salles associées** et **leurs capacités**.
💡 **Tables :**
- `PROJECTION` (`Num_projection`, `Tarif`, `Num_salle`)
- `SALLE` (`Num_salle`, `Capacite`)
📝 **Écris la requête SQL :**
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 4 : Trouver les films projetés après 18h00 </h3>
Affiche tous les films qui ont une projection **après 18h00**, avec leur titre et leur heure de début.
💡 **Tables :**
- `FILM` (`Num_film`, `Titre`)
- `PROJECTION` (`Num_projection`, `Num_film`, `Num_creneau`)
- `CRENEAU_HORAIRE` (`Num_creneau`, `Heure_de_debut`)
📝 **Écris la requête SQL :**
%% Cell type:code id: tags:
``` sql
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 5 : Afficher le nombre de projections par film </h3>
Affiche le **titre des films** et **le nombre total de projections** pour chaque film.
💡 **Tables :**
- `FILM` (`Num_film`, `Titre`)
- `PROJECTION` (`Num_projection`, `Num_film`)
📝 **Écris la requête SQL :**
%% Cell type:code id: tags:
``` sql
```
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment