Aide pour structurer requette sql
Fermé
zory
-
Modifié par zory le 8/01/2017 à 17:05
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 - 8 janv. 2017 à 22:41
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 - 8 janv. 2017 à 22:41
A voir également:
- Aide pour structurer requette sql
- Logiciel sql - Télécharger - Bases de données
- Sql replace plusieurs valeurs - Forum Programmation
- Récupération serveur sql - Télécharger - Gestion de données
- Dupliquer une table sql ✓ - Forum Programmation
- Sql commence par ✓ - Forum Webmastering
4 réponses
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
Ambassadeur
1 557
8 janv. 2017 à 17:30
8 janv. 2017 à 17:30
bonjour.
Je propose ceci, qui ne fait pas exactement ce que tu demandes:
Je propose ceci, qui ne fait pas exactement ce que tu demandes:
select utilisateur.userid, membername, nomcours, sum(temps) as totaltempscours from utilisateur, cours, duree where duree.userid = utilisateur.userid and cours.coursid = duree.coursid group by utilisateur.userid, membername, nomcours order by membername,noncours
jordane45
Messages postés
38366
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 janvier 2025
4 720
8 janv. 2017 à 17:38
8 janv. 2017 à 17:38
Bonjour,
Tu ne pourras pas récupérer les données exactement comme tu le souhaites (de façon totalement automatique...)
Par contre... tu peux récupérer les données facilement exploitables en utilisant une requête du genre :
Il est assez aisé par la suite de manipuler le résultat de cette requête pour l'afficher sous la forme que tu le souhaites dans ton programme....
NB : Pour faire des tests... réalise les DIRECTEMENT dans ta BDD et non via des lignes de code dans ton programme....
Tu ne pourras pas récupérer les données exactement comme tu le souhaites (de façon totalement automatique...)
Par contre... tu peux récupérer les données facilement exploitables en utilisant une requête du genre :
SELECT SUM(D.temps) as TMP , C.nomcours , U.* FROM duree D LEFT JOIN utilisateur U ON U.userid = D.userid LEFT JOIN cours C ON C.courid = D.courid GROUP BY U.userid,C.courid
Il est assez aisé par la suite de manipuler le résultat de cette requête pour l'afficher sous la forme que tu le souhaites dans ton programme....
NB : Pour faire des tests... réalise les DIRECTEMENT dans ta BDD et non via des lignes de code dans ton programme....
Bonjour,
Merci de votre participation messieurs, par contre Jordane, n'est il vraiment pas possible d'ajouter horizontalement dynamiquement les valeurs ? ca me faciliterai extraordinairement les choses ...
Merci de votre aide.
Merci de votre participation messieurs, par contre Jordane, n'est il vraiment pas possible d'ajouter horizontalement dynamiquement les valeurs ? ca me faciliterai extraordinairement les choses ...
Merci de votre aide.
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
Modifié par yg_be le 8/01/2017 à 21:30
Modifié par yg_be le 8/01/2017 à 21:30
Les requêtes SQL ne permettent pas d'ajouter horizontalement dynamiquement les valeurs. Cependant, c'est assez simple à faire par programme, et j'imagine que tu vas avoir besoin de l'un ou l'autre programme.
Qu'as-tu autour de ta base de données : un site web, des documents Office, ...?
Que produis-tu : des rapports imprimés, des fichiers, des mail, ...?
Qu'as-tu autour de ta base de données : un site web, des documents Office, ...?
Que produis-tu : des rapports imprimés, des fichiers, des mail, ...?
Je génère des rapports avec du PHP, c'est des statistiques, et j'essaye de rendre mes rapports le plus flexible possible.
je vais essayer de me débrouiller !
Merci de ton aide.
je vais essayer de me débrouiller !
Merci de ton aide.
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
8 janv. 2017 à 21:48
8 janv. 2017 à 21:48
En PHP, par exemple, il est assez simple de produire la séquence:
userid, membername, nomcours1, totaltempscours1, nomcours2, totaltempscours2, nomcousX, tempscoursX, ...etc
userid, membername, nomcours1, totaltempscours1, nomcours2, totaltempscours2, nomcousX, tempscoursX, ...etc
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
Modifié par yg_be le 8/01/2017 à 22:42
Modifié par yg_be le 8/01/2017 à 22:42
Suggestion pour PHP:
1) faire la requête
2) faire une boucle pour chacun des enregistrements dans la réponse à cette requête
3) pour chacun des userid, faire la requête
4) afficher les enregistrements obtenu par la seconde requête, tous sur une seule ligne.
1) faire la requête
select userid, membername from utilisateur
2) faire une boucle pour chacun des enregistrements dans la réponse à cette requête
3) pour chacun des userid, faire la requête
select nomcours, sum(temps) as totaltempscours from cours, duree where duree.userid = <le userid obtenu dans la requête précédente> and cours.coursid = duree.coursid group by nomcours order by noncours
4) afficher les enregistrements obtenu par la seconde requête, tous sur une seule ligne.