begin process at 2012 02 11 01:34:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Base de données

 > 

SQL Server

 > 

syntaxe sql


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

syntaxe sql

dimanche 19 août 2007 à 14:14:07 | syntaxe sql

Eros2007

Bonjours  T L 'monde
je vous demande de bien vous pencher sur ce cas
qui peut etre trés epineux pour certains mais trés simple pour d'autres ,ceux a qui je me permet de leurs demander de nous éclairer de leurs lanternes.


j'utilise 3 tables paradox reliées en maitre_détail

table1 (table élèves) ayant les champs(( code_eleve , Num_cours, Num_seance)) qui est maitre pour table2.

table2(table des cours) ayant les champs ((code_eleve , Num_cours, Num_seance,valeur_cours)) détail pour table1 et maitre pour table3

table3(table des séances) ayant les champs ((code_eleve , Num_cours, Num_seance,versement_cours)) détail pour table2

voila le probleme : un élève peut prendre un cours (C1) d'une valeur( V ) choisie dans un dbloockup.

l'eleve fait des versements lors des séance.

lorsque je veut avoir le resultat de la difference entre ,ce que l'élève doit payer et ce qu'il a verser

j'utilise un tquery : select code_eleve,sum(versement_cours) -sum( valeur_cours) from table2 join table2 on table3.num_cours=table2.num_cours and

table3.num_seance=table2.num_seance

group by code_eleve

le resultat et parfait si l'eleve verse la totalité en un seul versement.

mais si l'élève fait des versements multiples pour le cours, j'obtient une duplication de la valeur du cours pour chaque versement suplementaire

c'est à dire si la valeur du cours est( V )et que l'eleve fait un versement unique de la totalité (A)qui est la valeur total c'est bon et donne A -V=0.

Mais si la valeur du cours est( V ) et que l'eleve fait des versements (A1 + A2+A3...) , au lieu d'obtenir (V - (A1+A2+A3..) )

il ya duplication de la valeur du cours pour chaque accompte ( et cela devient( V+V+V+..)-(A1+A2+A3).


ce que je veut avoir
la difference que doit payer l'eleve
1- pour chaque cours
2- pour tout les cours confondue et toute les seances confondue d'autre part

merci les AMIS

dimanche 19 août 2007 à 17:26:56 | Re : syntaxe sql

Eros2007

pardon je voulai
mettre :
             from table3 join table2

à la place de  table2 join table2

dimanche 19 août 2007 à 20:01:58 | Re : syntaxe sql

Delphiprog

Administrateur CodeS-SourceS
Tout cela est un peu confus (je parle de la normalisation) et il faudrait respecter un minimum de formalisme dans la notation pour qu'on y voit clair rapidement (clés primaires soulignées, clés étrangères précédées du signe #).
D'autre part, je pense que la table "élèvesé essaie de remplir plusieurs rôles en comprenant à la fois les élèves et les les cours. Ce n'est pas très simple à gérer car plusieurs élèves peuvent suivre le même cours et il faudra alors dupliquer les cours et les séances. Je ne parle même pas d'une actualisation du prix des cours...

La relation maitre détail entre les trois tables ne semble donc pas être la réponse adaptée au problème posé.
Je verrais donc les choses de la façon suivante en décomposant en 4 tables:
table eleves(id_eleve, nom, prenom, ...);
table cours(Num_cours, Num_seance, titre, valeur_cours);
table inscriptions(id_inscription, #id_eleve, #num_cours, #num_seance);
table paiements(id_paiement, #id_inscription, date_paiement, montant_paiement);

La table inscriptions est alors une table de relation entre la table élèves et la table des cours.On pourrait se contenter d'utiliser les champs issus des tables élèves et cours pour composer la clé primaire mais cela aurait pour effet de compliquer les requêtes qui suivent.
En ce qui concerne la table des paiements, elle sera une table détail de la table inscriptions puisqu'un cours peut être réglé en une ou plusieurs fois.
Ainsi constituées, chaque table remplit un et un seul rôle.

Mise en oeuvre
Pour connaitre le montant restant à payer pour un éléve et pour l'ensemble des cours auxquels il est inscrit:
SELECT sum(c.valeur_cours) - sum(p.montant_paiement)
FROM paiements p, inscriptions i, cours c
WHERE p.id_inscription = i.id_inscription
AND i.id_eleve = "id de l'élève"

Pour connaitre le montant restant dû pour un élève pour un cours en particulier (sans jeu de mots ) :
SELECT sum(c.valeur_cours) - sum(p.montant_paiement)
FROM paiements p, inscriptions i, cours c, eleves e
WHERE p.id_inscription = i.id_inscription
AND i.id_eleve = "id de l'élève"
AND i.num_cours = "numéro du cours"

Pour connaitre le montant restant dû pour un éléve pour un cours et pour une séance particuliers :
SELECT sum(c.valeur_cours) - sum(p.montant_paiement)
FROM paiements p, inscriptions i, cours c, eleves e
WHERE p.id_inscription = i.id_inscription
AND i.id_eleve = "id de l'élève"
AND i.num_cours = "numéro du cours"
AND i.num_seance = "numéro de la séance".

NB : les valeurs entre guillemets doubles sont les paramètres variables des différentes requêtes. Quelques combobox bien placées et le tour est joué.
Voila, il reste à vérifier les dires, chose que je n'ai pas faite.

May Delphi be with you !

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
dimanche 19 août 2007 à 23:15:56 | Re : syntaxe sql

Eros2007

 Delphiprog me répond !
tout l'honneur est pour moi,
merci pour votre geste qui reste trés valeureux pour moi
encore merci

je tien à vous  dire que les cours sont des cours particulier et cela ne risque pas qu'il y'ait une partouze d'élèves pour un même cours,"lol"

je vais m'y mettre dessu et voir ce que cela va me donner

Encore merci pour vous DelphiProg "notre tête de file."



Cette discussion est classée dans : valeur, cours, num, table2, eleve


Répondre à ce message

Sujets en rapport avec ce message

Valeur de sortie d'une programme [ par Oniria ] Bonjour,J'aimerais savoir comment faire pour assigner une valeur de sortie à un programme et la récupérer dans un autre.Pour mieux comprendre, j'ai un readprocessmemory [ par devoluti0n ] Bonjour,j'aurai besoin de vous, pour comprendre comment faire pour récuperer la valeur d'un array of byte d'un programme en cours d'éxécution.Je sais problème d'affichage [ par Eros2007 ] Bonjour tout le monde voila il ya qlq chose qui m'échape pour l'affichage. Voila j'utilise 3 table paradox : table1(élèves),table2(cours) ,tab changement de valeur pour toutes les lignes, Aidez moi SVP [ par othland ] bonjour tous le monde!je travail avec un DBGrid et DBNavigator, et dans le onshow de ma fenetre j'excute une requete de type :'select T1.ch1, T1.ch2, controle de redondance [ par thoubs ] Salut à tous, j'ai 2 tables Table1(maitre) et Table2(dépendante), un fiche pour la saisie dans les 2 tables. Comment controler la redondance dans Tabl Aider moi SVP! [ par khawarizm ] Bonsoir tout le monde ; je compte faire quelques petits logiciel de simulation d'expériences de physique pour les cours de secondaire pour un ami  « p forcer la valeur d'un dblookupcombobox [ par lily80 ] Bonjour ;Je voudrai savoir comment faire pour forcer un dblookupcombobox sur une de ses valeurs sans que ce soit à chaque fois la même valeur.En fait, Tester si la valeur d' un champ est nul [ par SylvainVV ] (re)Bonjour,étant toujours en train d'essayer de gérer toutes les erreurs de mon programme, j'aimerais faire en sorte que l'on ne puisse cliquer sur u hexa vers string ? [ par Nero` ] bonsoir à tous .Je rencontre un petit problème de débutant .J'ai besoin de lire un octèt dans un fichier et ensuit de l'afficher dans une textbox ou a


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,803 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales