Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/09/2006, 17h50   #1
Membre à l'essai
 
Inscription : avril 2006
Messages : 87
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2006
Messages : 87
Points : 20
Points : 20
Par défaut [SQL] Requête SQL : obtenir un total

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 !



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?
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>
Si je mets le SUM(Stock.QUantity) dans ma requête et donc ainsi :

Code :
1
2
3
4
5
6
7
8
9
<?
$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 :
Code :
1
2
3
4
5
6
7
8
<?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 :

Code :
<?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...
Riwalenn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 17h54   #2
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
Quel est le type de ta donnée Quantity dans la base de données?
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 17h57   #3
Membre à l'essai
 
Inscription : avril 2006
Messages : 87
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2006
Messages : 87
Points : 20
Points : 20
bigint 8 octet
si je ne mets pas la requête SUM, la table affiche bien la quantité mais je me vois mal présenter un table de 500 lignes au lieux de 100 à mon boss...
Riwalenn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 18h03   #4
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
Est-ce que tu pourrait essayer de résumer la présentation de ton code à l'essentiel. Parce que je suis là et je cherche mais il y a beaucoup de HTML et de code non pertinent.
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 18h04   #5
Membre à l'essai
 
Inscription : avril 2006
Messages : 87
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2006
Messages : 87
Points : 20
Points : 20
Je fais la requête suivante directement dans la base SQL :

Code :
1
2
3
4
5
6
SELECT     S.ProductName, P.ProductDesc, S.Quality, SUM(S.Quantity) AS Qty, S.Type
FROM         Stock S LEFT OUTER JOIN
                      Products P ON S.ProductName = P.ProductName
WHERE     (S.Quality <> 'S')
GROUP BY S.ProductName, P.ProductDesc, S.Quality, S.Type
ORDER BY S.Type, S.ProductName
et cela fonctionne, donc je pense que c'est un problème d'affichage lié à la ligne 43.

En gros pour faire simple je voudrais afficher sur une page web dans un tableau le code ci-dessus !
Riwalenn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 18h09   #6
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
Je crois que le problème vient probablement juste du fait que tu ne nomme pas correctement ta colonne lorsque tu fait
Code :
$Quantity = odbc_result($process,"Quantity");
Je suggère
Code :
$Quantity = odbc_result($process,"Qty");
Parce que c'est ainsi que tu nomme ton champ dans ta requête SQL. Ça devrait marcher.
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 18h12   #7
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
Ah tout à coup je ne retrouve plus ce que je croyais avoir vu. Dumoins dans ta requête ça correcpondrait à ça

Code :
1
2
 
SUM(Stock.Quantity) AS Qty
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2006, 10h11   #8
Membre à l'essai
 
Inscription : avril 2006
Messages : 87
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2006
Messages : 87
Points : 20
Points : 20
je te remerci je n'ai plus d'erreur mais cela revient à ne pas mettre de SUM

ça me donne le résultat suivant :

Citation:
ALBE1 Alcatel OT Club db AV -4 M
ALBE1 Alcatel OT Club db AV -2 M
ALBE1 Alcatel OT Club db AV 13 M
ALBE1 Alcatel OT Club db AV 8 M
ALBE1 Alcatel OT Club db AV 6 M
ALBE1 Alcatel OT Club db AV 4 M
ALBE1 Alcatel OT Club db AV 7 M
ALBE1 Alcatel OT Club db AV 9 M
ALBE1 Alcatel OT Club db BV -1 M
ALBE1 Alcatel OT Club db BV 16 M
ALBE1 Alcatel OT Club db BV 6 M
ALBE1 Alcatel OT Club db BV 3 M
ALBE1 Alcatel OT Club db NV 10 M
ALBE1 Alcatel OT Club db NV 6 M
ALBE1 Alcatel OT Club db NV 6 M
ALBE1 Alcatel OT Club db NV 8 M
Hors moi ce que j'aimerais avoir comme résultat c'est :
ALBE1 Alcatel OT Club db AV 45 M
ALBE1 Alcatel OT Club db BV 24 M
ALBE1 Alcatel OT Club db NV 30 M

si tu vois ce que je veux dire. En tout cas c'est le résultat que j'obtiens quand je fais ma requête directement sur SQL Serveur.
Merci d'avance.
Riwalenn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2006, 10h19   #9
Membre à l'essai
 
Inscription : avril 2006
Messages : 87
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2006
Messages : 87
Points : 20
Points : 20
il fallait enlever stock.quantity du group by...

merci pour l'info cependant cela a supprimé mon erreur à la ligne 43.
Riwalenn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h15.


 
 
 
 
Partenaires

Hébergement Web