Slt à tous,
J'aimerais faire une requête SQL qui me renvoi un certain nombre d'enregistrement de film, la contrainte est que la somme de la durée des films doit faire exactement 60min, sachant que tous les films ont un durée inférieure à 1h, donc évaluée en minutes.
Je ne sais pas si cela est possible, dans le genre SELECT * FROM film (condition )
où condition doit être un truc du genre : minutes=SUM(film.duree)
Je sais pas trop
Merci pour vos réponses
Copyright © 2024 1QUIZZ.COM - All rights reserved.
Answers & Comments
Verified answer
Salut,
Pour apprendre SQL tu as un très bon cours gratuit ici : http://sql.developpez.com/
Pour ta requete tu peu te faire aider par des experts en SQL sur le forum d'entraide des utilisateurs SQL : http://www.developpez.net/forums/f37/bases-donnees...
Si tu sais à l'avance que tu dois renvoyer une combinaison précise (ex:2 films, ou 3 films), alors tu peux le faire avec une jointure réflexive.
Sinon, il n'y a aucun moyen en SQL pur de résoudre ce problème de satisfaction de contraintes. Tu peux peut-être t'en sortir en PL/SQL en rajoutant des traitements adaptés par dessus les requêtes de bases.
A défaut de bien connaitre les requêtes SQL je te propose une bidouille
IL faut faire une requête sur l'ensemble des films répondant au critère de recherche puis la liste récupérée dans une table afficher le résulta par tranche de films dont la somme des durées < temps total
en php
$resutat= mysql_query('SELECT * FROM films where x, y, z ');
$temps=0;
while ( film= mysql_fetch_assoc($resultat)) {
$temps = $temps + film['duree'];
if ($temps> $temps_max) {
echo "<hr>";
$temps=film['duree'];
}
echo film['nom']." <br>";
}
On peut remplacer les echo par des writes dans fichier 1, 2 etc...
avec
$i=1
$fic=$i.".txt";
$fp=fopen("$fic","w");
...
if ($temps> max) $i++; $fic=$i."txt....
fputs ($fp, $t1);fclose ($fp);