IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Requete count durée


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 24
    Par défaut Requete count durée
    Bonjour.

    Je suis actuellement en train de créer une base de données concernant une CDthèque.

    Je suis en train d'essayer de faire deux requêtes:
    - La première calcule la somme de la durée de tous morceaux et les classent par groupe.
    J'ai pensé à cette requête mais il y a encore des erreurs

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select sum(Morceau.Duree_morceau - cast ('00:00' as time),Groupe.Nom_groupe
    From Morceau, A_realise, Groupe
    Where A_realise.Id_Morceau=Morceau.Id_morceau
    and A_realise.Id_groupe=Groupe.Id_groupe
    Group by Groupe.Nom_groupe;
    J'ai une table Morceau comportant la durée (j'ai mis comme type TIME mais toutes mes durées sont saisies de la forme 00:00).
    Ma base de données pour cette requête est composé:
    - d'une table Morceau (avec Id_morceau,Num_piste,Nom_morceau, Duree_morceau, Id_genre),
    - d'une table Groupe (Id_groupe, Nom_groupe)
    - et d'une table A_realise (Id_morceau, Id_groupe) qui associe les 2 tables précédentes

    La seconde requête permet d'afficher pour le groupe qui a la "durée cumulée" la plus faible, le titre le plus longtemps.
    Pour ce faire je pense justement utiliser la requête ci-dessus rechercher le min...

    En attendant vos réponses,
    @ bientôt

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Quelle est la question ?

    Au passage, les jointures se font avec JOIN et non en mettant une égalité dans le WHERE.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 24
    Par défaut
    Ma question est en fait comment effectuer ces requêtes car je n'arrive pas à trouver quel type mettre pour mes durées écrites en 00:00 => type TIME?
    Et comment calculer la somme de la durée des morceaux pour chaque groupe, et dans une seconde requête la recherche de la durée maximum pr un groupe qui a composé des morceaux ds plusieurs albums.

    On m'avait dit que les jointures étaient faisables de cette manière... après je peux passer aux inner join.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    TIME ca me parrait pertinent pour stocker des temps non ?
    Pour faire des totaux, utilise SUM()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut
    Je mettrais plutot un int et la durée en seconde, ca risque d'être moins prise de tête pour les calculs, et pour l'affichage en minute seconde, tu te fais une petite fonction avec des modulos, je me demande même s'il y a pas déja des fonctions toutes faite en php pour ca.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 24
    Par défaut
    En fait j'ai déjà saisi mes 286 morceaux avec une durée écrite de la façon suivante 00:00 c'est pourquoi j'aimerai mieux garder cette typographie. De plus c'est celle utilisée sur les sites de musiques.
    En fait on devait faire une partie du projet sous access, j'ai donc exporté en .txt et effectué les modifications en langage sql.

    Quand j'execute la requete suivante

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Select sum(Morceau.Duree_morceau - cast ('00:00' as time), Groupe.Nom_groupe
    From Morceau, A_realise, Groupe
    Where A_realise.Id_Morceau=Morceau.Id_morceau
    and A_realise.Id_groupe=Groupe.Id_groupe
    Group by Groupe.Nom_groupe;

    j'ai le droit à

    "#1584 - Incorrect parameters in the call to stored function 'cast'"
    => Il ne prendrait pas mon type dans le cast

    Je précise que j'ai utilisé le type time pour la saisie des durées.

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/11/2005, 15h53
  2. Requete COUNT sur 3 tables
    Par Le-Cortex dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/09/2005, 10h39
  3. pb avec une requete assez dure
    Par critok dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/04/2005, 11h53
  4. Requete Count
    Par Slayes dans le forum Langage SQL
    Réponses: 11
    Dernier message: 23/01/2005, 19h01
  5. Aide pour une requete ... "COUNT(*)"
    Par mechantebestiole dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/05/2004, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo