Quelles sont les dates du concert de Corneille au Zenith ?
En algèbre relationnelle :
?Date[Concert x ?Chanteur=’Corneille'(Spectacle) x ?Nom=’Zenith'(Salle)]
En calcul relationnel :
{t.Date|Concert(t)?[?u,vSpectacle(u)?Salle(v)?(u.Spectacle_ID =t.Spectacle_ID)? (u.Chanteur =? Corneille?) ? (v.Nom =? Zenith?) ? (u.Salle_ID = v.Salle_ID) ] }
En SQL:
SELECT Date FROM Concert t, Spectacle u, Salle v WHERE t.Spectacle_ID = u.Spectacle_ID AND u.Chanteur = 'Corneille' AND u.Salle_ID = v.Salle_ID AND v.Nom = 'Zenith'
2- Quels sont les noms des salles ayant la plus grande capacité ?
En calcul relationnel :
{t.Nom | Salle(t) ? ¬[? u Salle(u) (u.Capacite >=t.Capacite) ] }
En SQL:
Il est possible de traduire directement la requête exprimée en calcul relationnel, comme ci-dessous.
SELECT Nom FROM Salle t WHERE NOT EXISTS (SELECT * FROM Salle u WHERE u.Capacité >= t. Capacité )
Il est également possible d’utiliser l’opérateur d’agrégation MAX, comme pour la requêtesuivante.
SELECT Nom FROM Salle WHERE Capacité >= ( SELECT (MAX(Capacité) FROM Salle )
Il est également possible d’utiliser le mot-clé ALL :
SELECT Nom FROM Salle WHERE Capacité >= ALL ( SELECT Capacité FROM Salle )
3- Quels sont les chanteurs n’ayant jamais réalisé de concert à la Cygale ?
En calcul relationnel :
t.Chanteur | Spectacle(t) ? ¬[? u, v Spectacle(u) ? Salle(v) ? (v.Nom =? Cygale?) ? (u.Chanteur =t.Chanteur)? (u.Salle_ID =v.Salle_ID) ] }
En SQL:
SELECT Chanteur FROM Spectacle WHERE Chanteur NOT IN (SELECT Chanteur FROM Spectacle u, Salle v WHERE u.Salle_ID=v.Salle_ID AND v.Nom='Cygale' )
Cette requête peut aussi s’exprimer avec un NOT EXISTS en utilisant une variable nuplet tdans le premier FROM, par une simple traduction du calcul relationnel :
SELECT Chanteur FROM Spectacle t WHERE Chanteur NOT EXISTS (SELECT * FROM Spectacle u, Salle v WHERE u.Salle_ID=v.Salle_ID AND v.Nom='Cygale' AND t.CHanteur=u.Chanteur )
4- Quels sont les chanteurs ayant réalisé au moins un concert dans toutes les salles?
En algèbre relationnelle :
?Chanteur,Salle_ID(Spectacle x Salle)÷?Salle_ID(Salle)
En calcul relationnel :
{t.Chanteur|Spectacle(t)?[?u(Salle(u))=?(?vSpectacle(v)?(v.Chanteur =t.Chanteur)? (u.Salle_ID = v.Salle_ID) ) ] }
En SQL:
SELECT Chanteur FROM Spectacle t WHERE NOT EXISTS (SELECT * FROM Salle u WHERE NOT EXISTS (SELECT * FROM Spectacle v WHERE v.Chanteur = t. Chanteur AND u.Salle_ID = v.Salle_ID ) )
5- Quels sont les dates et les identi cateurs des concerts pour lesquels il ne resteaucun billet invendu ?
En SQL:
SELECT Concert_ID, Date FROM Concert t WHERE NOT EXISTS (SELECT * FROM Billet u WHERE u.Concert_ID=t.Concert_ID AND NOT EXISTS (SELECT * FROM Vente v WHERE u.Billet_ID = v.Billet_ID ) )