Aide pour structurer requette sql
Fermé
zory
-
Modifié par zory le 8/01/2017 à 17:05
yg_be Messages postés 23331 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 novembre 2024 - 8 janv. 2017 à 22:41
yg_be Messages postés 23331 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 novembre 2024 - 8 janv. 2017 à 22:41
A voir également:
- Aide pour structurer requette sql
- Sql server recovery - Télécharger - Gestion de données
- Logiciel sql - Télécharger - Bases de données
- Sql replace plusieurs valeurs - Forum Programmation
- Dupliquer une table sql ✓ - Forum Programmation
- Requête sql doublons sur 2 champs ✓ - Forum Programmation
4 réponses
yg_be
Messages postés
23331
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2024
Ambassadeur
1 551
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
38289
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2024
4 703
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
23331
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2024
1 551
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
23331
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2024
1 551
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
23331
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2024
1 551
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.