[SQL] requête : obtenir le total

Résolu/Fermé
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 - 15 sept. 2006 à 17:49
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 - 26 sept. 2006 à 10:18
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 !

<?
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>

5 réponses

phunk Messages postés 497 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 30 novembre 2006 193
25 sept. 2006 à 17:49
Salut ! l'erreur vient de ta requête :
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 :)
1
Maxg59 Messages postés 275 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 7 octobre 2006 27
15 sept. 2006 à 21:34
salut !
C'est quoi comme erreur que tu as ?
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 5
19 sept. 2006 à 20:46
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
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
25 sept. 2006 à 17:41
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)

<?
$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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
26 sept. 2006 à 10:18
merci merci beaucoup :))) c'est bon j'ai enfin ce que je veux lol
0