{MySQL}
Frozy
-
Frozy -
Frozy -
Bonjour,
j'ai une petite question
j'aimerai faire une requete un peu spéciale
j'ai un tableau contenant l'id d'une personne avec ces différentes régénération de crédit que l'on va appeler table 1
j'ai une deuxieme table contenant toutes les utilisations de ces crédit
j'aimerai en une requete faire un sum de la premiere table du crédit auquel je retire les dépenses de la table deux.
Les deux tables sont reliées par l'id du client
j'ai essayé avec plusieurs méthodes mais cela ne fonctionne pas du style
SELECT
SUM(ccm.creditpreventif) as creditP,
SUM(ccm.creditcorrectif) as creditC,
SUM(m.tpsMPrev) as tpsP,
SUM(m.tpsMCor) as tpsC ,
creditP-tpsP,
creditC-tpsC
FROM client_credit_maintenance ccm, maintenance m WHERE ccm.id_client=m.id_client
si vous avez une réponse merci de bien vouloir me la donner
bonne soirée !
j'ai une petite question
j'aimerai faire une requete un peu spéciale
j'ai un tableau contenant l'id d'une personne avec ces différentes régénération de crédit que l'on va appeler table 1
j'ai une deuxieme table contenant toutes les utilisations de ces crédit
j'aimerai en une requete faire un sum de la premiere table du crédit auquel je retire les dépenses de la table deux.
Les deux tables sont reliées par l'id du client
j'ai essayé avec plusieurs méthodes mais cela ne fonctionne pas du style
SELECT
SUM(ccm.creditpreventif) as creditP,
SUM(ccm.creditcorrectif) as creditC,
SUM(m.tpsMPrev) as tpsP,
SUM(m.tpsMCor) as tpsC ,
creditP-tpsP,
creditC-tpsC
FROM client_credit_maintenance ccm, maintenance m WHERE ccm.id_client=m.id_client
si vous avez une réponse merci de bien vouloir me la donner
bonne soirée !
A voir également:
- {MySQL}
- Mysql community server - Télécharger - Bases de données
- Could not connect to mysql! please check your database settings! - Forum Redhat
- Mysql error 1 ✓ - Forum Réseaux sociaux
- Phpmyadmin a tenté de se connecter au serveur mysql, et le serveur a rejeté la connexion. merci de vérifier les valeurs de host, username et password dans la configuration et de s'assurer qu'elles correspondent aux informations fournies par l'administrateur du serveur mysql. ✓ - Forum PHP
- Access vs mysql - Forum Webmastering
6 réponses
bonsoir,
As tu un message d'erreur quand tu lances ta requête?
Est il possible que ce soit parce que tu as oubliés des _
a la place de
FROM client_credit_maintenance ccm, maintenance m
==> FROM client_credit_maintenance_ccm,maintenance_m
Sinon généralement il faut un group by apres le Where quand on utilise un SUM, Count etc... c'est pour ça que j'ajoute toujours l'id en plus dans le select
Cordialement.
As tu un message d'erreur quand tu lances ta requête?
Est il possible que ce soit parce que tu as oubliés des _
a la place de
FROM client_credit_maintenance ccm, maintenance m
==> FROM client_credit_maintenance_ccm,maintenance_m
Sinon généralement il faut un group by apres le Where quand on utilise un SUM, Count etc... c'est pour ça que j'ajoute toujours l'id en plus dans le select
Cordialement.
Merci de ta réponse
j'avais une erreur dans le script du haut mais c etait fait expres pour comprendre le soucis
Lorsque je fais ceci
SELECT
SUM(ccm.creditpreventif) as creditP,
SUM(ccm.creditcorrectif) as creditC,
SUM(m.tpsMPrev) as tpsP,
SUM(m.tpsMCor) as tpsC
FROM client_credit_maintenance ccm, maintenance m WHERE ccm.id_client=m.id_client
je n'ai pas d erreur mais les données reçu sont erronée
creditP creditC tpsP tpsC
10800 7200 14400 7200
en faite il me double la valeur de tpsP et tpsC car il existe qu'une seule ligne actuellement dans ma table maintenance et deux dans celle du crédit
c'est pour cela la syntax est fausse
je veux biensur au final avoir creditP - tpsP et reditC - tpsC
j'arrive a le faire en deux requete avec PHP mais j'aimerai decouvrir la syntax pour le faire d'une fois
j'avais une erreur dans le script du haut mais c etait fait expres pour comprendre le soucis
Lorsque je fais ceci
SELECT
SUM(ccm.creditpreventif) as creditP,
SUM(ccm.creditcorrectif) as creditC,
SUM(m.tpsMPrev) as tpsP,
SUM(m.tpsMCor) as tpsC
FROM client_credit_maintenance ccm, maintenance m WHERE ccm.id_client=m.id_client
je n'ai pas d erreur mais les données reçu sont erronée
creditP creditC tpsP tpsC
10800 7200 14400 7200
en faite il me double la valeur de tpsP et tpsC car il existe qu'une seule ligne actuellement dans ma table maintenance et deux dans celle du crédit
c'est pour cela la syntax est fausse
je veux biensur au final avoir creditP - tpsP et reditC - tpsC
j'arrive a le faire en deux requete avec PHP mais j'aimerai decouvrir la syntax pour le faire d'une fois
Hello
Pourquoi n'as tu pas fait des jointures?
Ce serait plus fiable pour le résultat.
De plus l'opération de soustraire ou d'additionner par exemple, mieux vaut la faire via PHP. Mysql est pas doué pour ça.
SQL server oui.
SELECT cm.id_client,
,SUM(ccm.creditpreventif) as creditP
,SUM(ccm.creditcorrectif) as creditC
,SUM(m.tpsMPrev) as tpsP
,SUM(m.tpsMCor) as tpsC
FROM client_credit_maintenance ccm
LEFT JOIN maintenance m ON m.id_client = cm.id_client
GROUP BY cm.id_client
Par contre je n'ai pas bien compris l'esprit de ta requete.
Maintenance c'est une table qui contient quoi ?
Pourquoi n'as tu pas fait des jointures?
Ce serait plus fiable pour le résultat.
De plus l'opération de soustraire ou d'additionner par exemple, mieux vaut la faire via PHP. Mysql est pas doué pour ça.
SQL server oui.
SELECT cm.id_client,
,SUM(ccm.creditpreventif) as creditP
,SUM(ccm.creditcorrectif) as creditC
,SUM(m.tpsMPrev) as tpsP
,SUM(m.tpsMCor) as tpsC
FROM client_credit_maintenance ccm
LEFT JOIN maintenance m ON m.id_client = cm.id_client
GROUP BY cm.id_client
Par contre je n'ai pas bien compris l'esprit de ta requete.
Maintenance c'est une table qui contient quoi ?
Bonsoir
merci de vos réponses
en effet j'ai resolu le probleme comme tu l'as dit a l'aide de PHP pour m'en sortir mais je vous savoir si cela était possible étant donne que c'est une opération courante et que je sais la faire sous MSSQL et non pas sous MYSQL ^^.
Merci pour vos contributions
Arne
merci de vos réponses
en effet j'ai resolu le probleme comme tu l'as dit a l'aide de PHP pour m'en sortir mais je vous savoir si cela était possible étant donne que c'est une opération courante et que je sais la faire sous MSSQL et non pas sous MYSQL ^^.
Merci pour vos contributions
Arne
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour voici la solution que j'ai utiliser pour ma problématique :
function calculniveaumaintenance($id_client)
{
$data = mysql_query("SELECT SUM(creditpreventif) as creditP,SUM(creditcorrectif) as creditC FROM client_credit_maintenance WHERE id_client ='".$id_client."'") OR DIE (mysql_error());
$credit = array(0,0,0,0,0,0);
if($infos = mysql_fetch_array($data))
{
$credits[0] = $infos['creditP'];
$credits[1] = $infos['creditC'];
}
$data = mysql_query("SELECT SUM(tpsMPrev) as tpsP,SUM(tpsMCor) as tpsC FROM maintenance WHERE id_client ='".$id_client."'") OR DIE (mysql_error());
if($infos = mysql_fetch_array($data))
{
$credits[2] = $infos['tpsP'];
$credits[3] = $infos['tpsC'];
}
$credits[4] = $credits[0]-$credits[2];
$credits[5] = $credits[1]-$credits[3];
return $credits;
}
j'ai décomposer les requetes pour faire plus simple, l'un pour calculer le total de temps de crédit et l'autre pour le temps de crédit utilisé.
Si cela peut vous aider et si vous avez des améliorations a proposer je suis toujours d'écoute ;)
bonne journée
Froz
function calculniveaumaintenance($id_client)
{
$data = mysql_query("SELECT SUM(creditpreventif) as creditP,SUM(creditcorrectif) as creditC FROM client_credit_maintenance WHERE id_client ='".$id_client."'") OR DIE (mysql_error());
$credit = array(0,0,0,0,0,0);
if($infos = mysql_fetch_array($data))
{
$credits[0] = $infos['creditP'];
$credits[1] = $infos['creditC'];
}
$data = mysql_query("SELECT SUM(tpsMPrev) as tpsP,SUM(tpsMCor) as tpsC FROM maintenance WHERE id_client ='".$id_client."'") OR DIE (mysql_error());
if($infos = mysql_fetch_array($data))
{
$credits[2] = $infos['tpsP'];
$credits[3] = $infos['tpsC'];
}
$credits[4] = $credits[0]-$credits[2];
$credits[5] = $credits[1]-$credits[3];
return $credits;
}
j'ai décomposer les requetes pour faire plus simple, l'un pour calculer le total de temps de crédit et l'autre pour le temps de crédit utilisé.
Si cela peut vous aider et si vous avez des améliorations a proposer je suis toujours d'écoute ;)
bonne journée
Froz