Problème : Requêtes sans résultat - SQL/NoSQL - Programmation
Marsh Posté le 12-05-2007 à 15:30:18
Il me semble que la clause group by devrait contenir toutes les colonnes sauf celle du count(). Par exemple pour la première requête, il faudrait essayer avec ...GROUP BY c.id_cursus, c.nom_cursus;
Marsh Posté le 13-05-2007 à 19:47:54
Salut olivthill;
S'il faut que je regroupe par Group By c.id_cursus, c.nom_cursus; pour la première requête (question 6), est-ce qu'il faudra alors que pour la seconde requête (question 7) que je regroupe par Group By c.id_cursus, c.nom_cursus, c.prix_cursus; ?
Qu'en est-il pour les autres requêtes les colonnes où il y a les données générées par les fonction sum et count n'ont pas besoin de regroupement?
Merci.
Marsh Posté le 13-05-2007 à 19:53:09
lorsque tu fais un group by, cette clause doit contenir tous les champs de ton select qui ne sont pas des fontions d'agregats.
edit :
et donc oui pour la 7, il faudrai faire ce que tu as dit.
Ainsi que pour toutes les autres. Tu dois mettre dans ton group by tous tes champs autres que sum() et count()
Marsh Posté le 13-05-2007 à 20:10:04
Merci Gocho;
j'ai une autre question: en se référant au MPD je commence à penser que les lignes AND i.id_cursus = c.id_cursus dans le where des questions 7 et 6 sont suprflues qu'en penses-tu?
Concernant les résultats de tables vide je me suis rendu compte en tapant select * from compte; que cette table est complètement vide de lignes.
Marsh Posté le 13-05-2007 à 23:49:04
alors pour le "AND i.id_cursus = c.id_cursus", je ne pense pas qu'il soit inutile.
Sur quoi te bases tu ? (enfin, oui, sur le MPD. Mais qu'est ce qui te fait dire cela ?)
C'est le lien entre les deux tables, si tu n'as pas cette ligne, tu vas faire un produit cartésien entre tes deux tables, et ca va etre moche...
(c'est à dire que pour chaque compte, le SGBD va faire correspondre tous les etudiants )
Ensuite, pour la table vide, ben remplis la
edit : parce que, effectivement, tester des requetes avec des tables vides, c'est pas le mieux qu'on ait fait
Marsh Posté le 14-05-2007 à 09:53:10
teycir a écrit : Salut olivthill; |
- Un sum ou un count a forcément besoin d'agrégation. le group by porte systématiquement sur l'ensemble des champs retournés par la requêtes sauf ceux fasant l'objet d'un agrégat.
- Sinon, "Total factures", je ne pense pas que ce soit le nombre total de factures, mais le total de leur montant.
Marsh Posté le 14-05-2007 à 09:58:58
Et la VI est complètement fausse du coup : tu vas chercher le prix des factures pour le "à factuer", plutôt que de prendre le montant trouvé dans la table "cursus" comme demandé.
Marsh Posté le 12-05-2007 à 10:30:18
Bonjour;
Je suis sous mysql server 5 et je travaille avec mysql browser.
J'ai fait 4 requêtes qui ne donnent aucune ligne en résultat et il n' y a pas de message d'erreur non plus.
Cela fait 2 heures que je cherche la source d'erreur.
Pouvez-vous me dire si vous voyez des fautes de logique?
Le mpd donne une table compte (contenant id_etudiant, le montant des factures, montant des versements, no_facture...) reliée à une table étudiant (contenant id_etudiant, le nom_etudiant ...) elle-même (etudiant) reliée à une table inscription (contenant id_etudiant, id_cursus, no_inscription...) elle-même (inscription) reliée à une table cursus (contenant id_cursus, nom_cursus, prix_cursus...).
D'avance merci.