cours-2025-2026 | Supports de mes cours pour l'année 2025-2026 | FX Jollois
SELECT *
FROM Gymnases
WHERE Surface > 400
AND Ville IN ("VILLETANEUSE", "SARCELLES");
SELECT Nom, Prenom
FROM (Sportifs NATURAL JOIN Jouer) NATURAL JOIN Sports
WHERE Libelle = "Hand ball";
Ici, il est aussi possible d’utiliser les jointures naturelles.
SELECT DISTINCT NomGymnase, Ville, LOWER(Jour)
FROM Gymnases, Seances, Sports
WHERE Gymnases.IdGymnase = Seances.IdGymnase
AND Seances.Idsport = Sports.IdSport
AND Libelle = "Hand ball";
SELECT NomGymnase, Ville, Horaire
FROM Gymnases, Seances, Sports
WHERE Gymnases.IdGymnase = Seances.IdGymnase
AND Seances.Idsport = Sports.IdSport
AND Libelle = "Hockey"
AND LOWER(Jour) = "mercredi"
AND Horaire > 15
ORDER BY 2, 1, 3;
SELECT DISTINCT NomGymnase, Ville
FROM Gymnases, Seances, Sports
WHERE Gymnases.IdGymnase = Seances.IdGymnase
AND Seances.Idsport = Sports.IdSport
AND Libelle IN ("Basket ball", "Volley ball");
Sans jointure, avec des sous-requêtes.
SELECT Nom, Prenom
FROM Sportifs
WHERE IdSportif IN (SELECT IdSportif FROM Jouer)
AND IdSportif IN (SELECT IdSportifEntraineur FROM Entrainer);
Avec jointure
SELECT DISTINCT Nom, Prenom
FROM Sportifs, Jouer, Entrainer
WHERE Sportifs.IdSportif = Jouer.IdSportif
AND Sportifs.IdSportif = Entrainer.IdSportifEntraineur;
Avec une sous-requête
SELECT Nom, Prenom
FROM Sportifs
WHERE IdSportif IN (SELECT IdSportifConseiller
FROM Sportifs);
En faisant la jointure entre Sportifs et Sportifs. Dans ce cas, il faut utiliser le renommage absolument.
SELECT DISTINCT S1.Nom, S1.Prenom
FROM Sportifs S1, Sportifs S2
WHERE S1.IdSportif = S2.IdSportifConseiller;
SELECT Nom, Prenom
FROM Sportifs
WHERE IdSportif = (SELECT IdSportifConseiller
FROM Sportifs
WHERE Nom = "KERVADEC");
Entraîneur de Hand ou de Basket
SELECT DISTINCT Nom, Prenom
FROM Sportifs, Entrainer, Sports
WHERE Sportifs.IdSportif = Entrainer.IdSportifEntraineur
AND Entrainer.IdSport = Sports.IdSport
AND Libelle IN ("Hand ball", "Basket ball");
Entraîneur de Hand et de Basket
SELECT DISTINCT Nom, Prenom
FROM Sportifs
WHERE IdSportif IN
(SELECT IdSportifEntraineur
FROM Entrainer NATURAL JOIN Sports
WHERE Libelle = "Hand ball")
AND IdSportif IN
(SELECT IdSportifEntraineur
FROM Entrainer NATURAL JOIN Sports
WHERE Libelle = "Basket ball");
SELECT AVG(Age)
FROM Sportifs, Jouer, Sports
WHERE Sportifs.IdSportif = Jouer.IdSportif
AND Jouer.IdSport = Sports.IdSport
AND Libelle = "Basket ball"
AND UPPER(Sexe) = "F";
SELECT Nom, Prenom
FROM Sportifs
WHERE IdSportif NOT IN (SELECT IdSportif FROM Jouer);
SELECT Nom, Prenom, COUNT(*) as "Nb Sports arbitrés"
FROM Sportifs NATURAL JOIN Arbitrer
GROUP BY Nom, Prenom;
SELECT NomGymnase, Ville
FROM Gymnases NATURAL JOIN Seances
WHERE LOWER(Jour) = "mercredi"
GROUP BY NomGymnase, Ville
HAVING COUNT(*) >= 15;
SELECT NomGymnase, Ville, LOWER(Jour)
FROM (Gymnases NATURAL JOIN Seances) NATURAL JOIN Sports
WHERE Libelle = "Volley ball"
GROUP BY NomGymnase, Ville, LOWER(Jour)
HAVING COUNT(*) >= 4;
SELECT Nom, Prenom, LOWER(Jour),
COUNT() AS "Nb sénces"
FROM Sportifs, Seances, Sports
WHERE Sportifs.IdSportif = Seances.IdSportifEntraineur
AND Seances.IdSport = Sports.IdSport
GROUP BY Nom, Prenom, LOWER(Jour);
SELECT NomGymnase, LOWER(Jour), Libelle, COUNT(*)
FROM Gymnases, Seances, Sports
WHERE Gymnases.IdGymnase = Seances.IdGymnase
AND Seances.IdSport = Sports.Idsport
AND Ville = "MONTMORENCY"
GROUP BY NomGymnase, LOWER(Jour), Libelle;
SELECT Libelle, ROUND(AVG(Age), 2)
FROM Sports, Jouer, Sportifs
WHERE Sports.IdSport = Jouer.IdSport
AND Jouer.IdSportif = Sportifs.IdSportif
GROUP BY Libelle
ORDER BY 1
LIMIT 1;
SELECT NomGymnase, Ville
FROM Gymnases
WHERE IdGymnase NOT IN (SELECT IdGymnase
FROM Seances
WHERE LOWER(Jour) = "dimanche");
SELECT LOWER(Jour), MIN(Horaire), MAX(Horaire)
FROM Gymnases NATURAL JOIN Seances
WHERE Ville = "STAINS"
GROUP BY LOWER(Jour);
SELECT Nom, Prenom
FROM Sportifs
WHERE IdSportif IN
(SELECT IdSportifEntraineur
FROM Entrainer NATURAL JOIN Sports
WHERE Libelle IN ("Hand ball", "Basket ball"))
AND IdSportif NOT IN
(SELECT IdSportifEntraineur
FROM Entrainer NATURAL JOIN Sports
WHERE Libelle NOT IN ("Hand ball", "Basket ball"));
SELECT Nom, Prenom,
CASE WHEN NbJ IS NULL THEN 0 ELSE NbJ END as "Joués",
CASE WHEN NbA IS NULL THEN 0 ELSE NbA END as "Arbitrés",
CASE WHEN NbE IS NULL THEN 0 ELSE NbE END as "Entrainés"
FROM ((Sportifs S
LEFT OUTER JOIN
(SELECT IdSportif, COUNT(*) AS NbJ
FROM Jouer
GROUP BY IdSportif) J
ON S.idSportif = J.IdSportif)
LEFT OUTER JOIN
(SELECT IdSportif, COUNT(*) AS NbA
FROM Arbitrer
GROUP BY IdSportif) A
ON S.idSportif = A.IdSportif)
LEFT OUTER JOIN
(SELECT IdSportifEntraineur, COUNT(*) AS NbE
FROM Entrainer
GROUP BY IdSportifEntraineur) E
ON S.idSportif = E.IdSportifEntraineur;
SELECT S1.Nom, S1.Prenom, S2.Nom, S2.Prenom
FROM Sportifs S1, Sportifs S2
WHERE S1.IdSportifConseiller = S2.IdSportifConseiller
AND S1.Age = S2.Age
AND S1.IdSportif < S2.IdSportif;
SELECT Ville, NomGymnase, Surface
FROM Gymnases G
WHERE NOT EXISTS
(SELECT *
FROM Gymnases
WHERE Ville = G.Ville
AND Surface > G.Surface)
ORDER BY 1, 2;
SELECT NomGymnase, Ville, LOWER(Jour),
REPLACE(REPLACE(MAX(Fin), ".5", "h3"), ".0", "h0") || 0 as Fin
FROM Gymnases NATURAL JOIN
(SELECT *,
CAST(ROUND(Horaire) * 60 + (Horaire * 10) % 10 * 10 + Duree as FLOAT) / 60 as Fin
FROM Seances)
GROUP BY NomGymnase, Ville
ORDER BY 2, 1;