[MySQL] J'ai 7 requêtes... Comment en avoir qu'une seule ?

J'ai 7 requêtes... Comment en avoir qu'une seule ? [MySQL] - Programmation

Marsh Posté le 08-03-2002 à 11:11:10    

Voici le code :

Code :
  1. for ($i=1; $i<=7; $i++) {
  2.   $sql_query[$i] = "SELECT COUNT(id) AS nb FROM stock WHERE cat='$i'";
  3. }
  4. $sql_id = mysql_pconnect($sql_vars[0], $sql_vars[1], $sql_vars[2]);
  5. for ($i=1; $i<=7; $i++) {
  6.   $resultat = mysql_db_query($sql_vars[3], $sql_query[$i], $sql_id);
  7.   if (mysql_num_rows($resultat) and ($res = mysql_fetch_object($resultat))) {
  8.     echo $res->nb;
  9.     mysql_free_result($resultat);
  10.   }
  11. }


 
J'aimerais que les 7 requêtes soient exécutées en une seule fois. J'ai fais divers essai avec PhpMyAdmin mais à chaque Wrong Syntax !
 
Merci d'avance

 

[jfdsdjhfuetppo]--Message édité par Dost67--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 08-03-2002 à 11:11:10   

Reply

Marsh Posté le 08-03-2002 à 11:16:20    

salut
tu peux pas écrire une des chose suivantes ?

Code :
  1. 1. where cat < 8
  2. 2. where cat between 1 and 7
  3. 3. where cat = 1 or cat = 2 or... ... or cat = 7


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Marsh Posté le 08-03-2002 à 11:21:09    

Bah non parce qu'en fait mes 7 requêtes c'est :
SELECT COUNT(id) AS nb FROM stock WHERE cat='1'
SELECT COUNT(id) AS nb FROM stock WHERE cat='2'
SELECT COUNT(id) AS nb FROM stock WHERE cat='3'
SELECT COUNT(id) AS nb FROM stock WHERE cat='4'
SELECT COUNT(id) AS nb FROM stock WHERE cat='5'
SELECT COUNT(id) AS nb FROM stock WHERE cat='6'
SELECT COUNT(id) AS nb FROM stock WHERE cat='7'
 
Et j'en voudrais qu'une seule mais bien entendu nb changera de nom à chage fois... Par exemple :
SELECT COUNT(id) AS nb1 FROM stock WHERE cat='1'
SELECT COUNT(id) AS nb2 FROM stock WHERE cat='2'

... etc.
Mais le pb c'est que si j'écris les 2 lignes en italique dans MySQL ça ne lui plaît pas. Ma question est : comment exécuter ces requêtes en même temps (et pas une par une avec des boucles for).

Reply

Marsh Posté le 08-03-2002 à 11:23:11    

instantdharma a écrit a écrit :

salut
tu peux pas écrire une des chose suivantes ?

Code :
  1. 1. where cat < 8
  2. 2. where cat between 1 and 7
  3. 3. where cat = 1 or cat = 2 or... ... or cat = 7

 




 
Non sinon il me retourne le nb d'id pour toutes les cat confondues alors que je ne veux bien 7 résultats séparés mais avec une seule requête.

Reply

Marsh Posté le 08-03-2002 à 11:25:47    

SELECT Count(*), cat
FROM stock
GROUP BY cat;
 
t'as essayé ça ?

Reply

Marsh Posté le 08-03-2002 à 12:07:32    

trueslash a écrit a écrit :

SELECT Count(*), cat
FROM stock
GROUP BY cat;
 
t'as essayé ça ?  




 
Non pas encore.

Reply

Marsh Posté le 08-03-2002 à 12:24:52    

Dost67 a écrit a écrit :

 
je ne veux bien 7 résultats séparés mais avec une seule requête.  




 
 :heink:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-03-2002 à 13:26:43    

trueslash a écrit a écrit :

SELECT Count(*), cat
FROM stock
GROUP BY cat;



C'est pas mal ca.
Si y a besoin, on peut même rajouter un WHERE cat < 8 AND cat > 0 avant le GROUP BY.

Reply

Marsh Posté le 09-03-2002 à 12:44:18    

Excusez moi de revenir si tard mais fallait quand même dire merci, c'est exactement ce que je cherchais.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed