[SQL] requête : obtenir le total
Résolu
Riwalenn
Messages postés
364
Date d'inscription
Statut
Membre
Dernière intervention
-
Riwalenn Messages postés 364 Date d'inscription Statut Membre Dernière intervention -
Riwalenn Messages postés 364 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
sous le code suivant, j'aimerais obtenir le total genre SUM(Stock.Quantity), mais j'obtiens une erreur si je le fait.. quelqu'un peut-il me dire quoi mettre ? Merci d'avance !
sous le code suivant, j'aimerais obtenir le total genre SUM(Stock.Quantity), mais j'obtiens une erreur si je le fait.. quelqu'un peut-il me dire quoi mettre ? Merci d'avance !
<? include ("connexion_stock.php"); ?> <html> <head> </head> <body> <? $sqlconnect=odbc_connect($dsn,$username,$password); $sqlquery="SELECT Products.ProductName, Products.ProductDesc, Products.type, Stock.Quality FROM Products, Stock where Products.ProductName=Stock.ProductName and Products.Type <> 'S' Group by Products.ProductName, Products.ProductDesc, Products.type, Stock.Quality order by Products.ProductName, Products.Type;" or die (mysql_error()); $process=odbc_exec($sqlconnect, $sqlquery); ?> <html> <head> <title>Etat du Stock</title> <link href="../resolutions/style.css" rel="stylesheet" type="text/css"> </head> <body> <p align="center"><b><font face="Arial" size="5">Eurosource Stock Report</font></b></p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <table width="90%" border="0" align="center" cellpadding="1" cellspacing="1"> <tr class="tab04"> <td> <div align="center">ProductName</div></td> <td> <div align="center">ProductDesc</div></td> <td> <div align="center">Quality</div></td> <td> <div align="center">Quantity</div></td> <td> <div align="center">Type</div></td> </tr> <?php while(odbc_fetch_row($process)){ $ProductName = odbc_result($process,"ProductName"); $ProductDesc = odbc_result($process,"ProductDesc"); $Type = odbc_result($process,"Type"); $Quality = odbc_result($process,"Quality"); ?> <tr class="tab05"> <td><?php echo $ProductName ; ?></td> <td><?php echo $ProductDesc ; ?></td> <td><div align="center"><?php echo $Quality ; ?></div></td> <td><div align="center"></div></td> <td><div align="center"><?php echo $Type ; ?></div></td> </tr><?php }odbc_close($sqlconnect); ?> </table> </body> </html> </body> </html>
A voir également:
- [SQL] requête : obtenir le total
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Jointure sql ✓ - Forum MySQL
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
5 réponses
Salut ! l'erreur vient de ta requête :
Enlève "Stock.Quantity" du group by.
Tu dois faire un group by sur tous les autres champs, mais pas sur le champ aggrégé.
Essayes de tester ta requête, ça devrait passer beaucoup mieux :)
SELECT Products.ProductName, Products.ProductDesc, Products.type, Stock.Quality, SUM(Stock.Quantity) FROM Products, Stock where Products.ProductName=Stock.ProductName and Products.Type <> 'S' Group by Products.ProductName, Products.ProductDesc, Products.type, Stock.Quality, Stock.Quantity
Enlève "Stock.Quantity" du group by.
Tu dois faire un group by sur tous les autres champs, mais pas sur le champ aggrégé.
Essayes de tester ta requête, ça devrait passer beaucoup mieux :)
selon la norme SQL92, ta requète devrait s'écrire ainsi:
SELECT Products.ProductName, Products.ProductDesc, Products.type, Stock.Quality, sum(stock.quantity) FROM Products, Stock where Products.ProductName=Stock.ProductName and Products.Type <> 'S'
Group by Products.ProductName, Products.ProductDesc, Products.type, Stock.Quality order by Products.ProductName, Products.Type
en bref, tu as oublié ton champ d'agrégation (le SUM) ; alors sur quoi veux-tu que ton moteur SQL fasse un regroupement (le group by) ?
si possible, préfères une clause JOIN à une clause WHERE, elle sera plus rapide à l'exécution
SELECT Products.ProductName, Products.ProductDesc, Products.type, Stock.Quality, sum(stock.quantity) FROM Products, Stock where Products.ProductName=Stock.ProductName and Products.Type <> 'S'
Group by Products.ProductName, Products.ProductDesc, Products.type, Stock.Quality order by Products.ProductName, Products.Type
en bref, tu as oublié ton champ d'agrégation (le SUM) ; alors sur quoi veux-tu que ton moteur SQL fasse un regroupement (le group by) ?
si possible, préfères une clause JOIN à une clause WHERE, elle sera plus rapide à l'exécution
bonjour,
si je fais ce que tu me dis (chose que j'avais déjà essayé, c'est d'ailleurs pour ça que je demande de l'aide)
en rajoutant donc le code suivant :
j'ai l'erreur suivante :
Warning: odbc_result(): Field Quantity not found in c:\program files\easyphp1-8\www\eurosource-intranet\references\print_stock.php on line 43
la ligne 43 étant :
Merci de m'aider SVP...
si je fais ce que tu me dis (chose que j'avais déjà essayé, c'est d'ailleurs pour ça que je demande de l'aide)
<? $sqlconnect=odbc_connect($dsn,$username,$password); $sqlquery="SELECT Products.ProductName, Products.ProductDesc, Products.type, Stock.Quality, SUM(Stock.Quantity) FROM Products, Stock where Products.ProductName=Stock.ProductName and Products.Type <> 'S' Group by Products.ProductName, Products.ProductDesc, Products.type, Stock.Quality, Stock.Quantity order by Products.ProductName, Products.Type ;" or die (mysql_error()); $process=odbc_exec($sqlconnect, $sqlquery); ?>
en rajoutant donc le code suivant :
<?php while(odbc_fetch_row($process)){ $ProductName = odbc_result($process,"ProductName"); $ProductDesc = odbc_result($process,"ProductDesc"); $Type = odbc_result($process,"Type"); $Quality = odbc_result($process,"Quality"); $Quantity = odbc_result($process,"Quantity"); ?> <tr class="tab05"> <td><?php echo $ProductName ; ?></td> <td><?php echo $ProductDesc ; ?></td> <td><div align="center"><?php echo $Quality ; ?></div></td> <td><div align="center"><?php echo $Quantity ; ?></div></td> <td><div align="center"><?php echo $Type ; ?></div></td> </tr><?php }odbc_close($sqlconnect); ?>
j'ai l'erreur suivante :
Warning: odbc_result(): Field Quantity not found in c:\program files\easyphp1-8\www\eurosource-intranet\references\print_stock.php on line 43
la ligne 43 étant :
<?php while(odbc_fetch_row($process)){ $ProductName = odbc_result($process,"ProductName"); $ProductDesc = odbc_result($process,"ProductDesc"); $Type = odbc_result($process,"Type"); $Quality = odbc_result($process,"Quality"); $Quantity = odbc_result($process,"Quantity"); ?>
Merci de m'aider SVP...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question