Besoin d'optimiser une requête!

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Besoin d'optimiser une requête!

Re: Besoin d'optimiser une requête!

par albat » 27 avr. 2005, 18:05

$query = "SELECT * FROM item WHERE ReportID='".$P."' AND IPage='Résumé' AND IGroup IN ('Ordinateur', 'Carte Mère', 'Moniteur', 'Multimédia', 'Stockage', 'Partitions', 'Entrée', 'Réseaux')";
$result = mysql_query($query) or die(mysql_error());
Bien qu'imparfaite, cette écriture simplifie quand même pas mal de choses, non ?

par BFH » 27 avr. 2005, 16:47

Je desirerais obtenir si possible un truc du genre :
Ordinateur :
Les valeurs IField et les valeurs IValue
Les valeurs IField et les valeurs IValue
Les valeurs IField et les valeurs IValue
Les valeurs IField et les valeurs IValue
Les valeurs IField et les valeurs IValue
Les valeurs IField et les valeurs IValue



Carte Mère :
Les valeurs IField et les valeurs IValue
Les valeurs IField et les valeurs IValue
Les valeurs IField et les valeurs IValue
Les valeurs IField et les valeurs IValue
Les valeurs IField et les valeurs IValue
Les valeurs IField et les valeurs IValue
Les valeurs IField et les valeurs IValue
Les valeurs IField et les valeurs IValue

etc...
Voila si c'est possible bien sur!
D'avance merci.

Ripat : Je trouve ta formulation très bien mais est ce que cela me permet de mettre en forme comme je le souhaiterais?

par Ripat » 27 avr. 2005, 16:44

Si ta variable $P ne change pas, que penses-tu de ceci:
$query = "
SELECT *
FROM item
WHERE ReportID='$P' AND IPage='Résumé' AND
(
  IGroup='Ordinateur' OR 
  IGroup='Carte Mère' OR
  IGroup='Moniteur' OR
  IGroup='Multimédia' OR
  IGroup='Stockage' OR
  IGroup='Partitions' OR
  IGroup='Entrée' OR
  IGroup='Réseaux'
)";

par iclo » 27 avr. 2005, 16:39

Ok, mais tu veux les afficher comment toutes les catégories à la suite ? dans des tableaux séparés ? donnes nous plus d'infos ...

par BFH » 27 avr. 2005, 16:36

Moi je demande pas mieux que de n'avoir qu'une requête au lieu de tout cela! C'est d'ailleurs l'objectif de mon post! :D

Les données que je recupère je les affiche dans un tableau :
<TABLE border="0" width="100%">
<?
while($row=mysql_fetch_assoc($result))
{
?>
<TR>
<TD> <?=$row["IField"];?> </TD>
<TD> <?=$row["IValue"];?> </TD>
</TR>
<?
}
?>

</TABLE>
Et il faudrait que je fasse cela pour chaque $query

par iclo » 27 avr. 2005, 16:28

Pauvre serveul sql :( :( :(
Il faudrait surtout optimiser le tout en ne faisant qu'une seule requêtte sql.
Il nous faudrait des détails sur ce que tu fais de ces données à les récuperées.

Besoin d'optimiser une requête!

par BFH » 27 avr. 2005, 16:11

Bonjour, je voudrais savoir si il y avait un moyen d'optimiser ce qui suit :
$query="SELECT * FROM item WHERE ReportID=\"$P\"&& IPage=\"Résumé\"&& IGroup=\"Ordinateur\" ";
$query1="SELECT * FROM item WHERE ReportID=\"$P\"&& IPage=\"Résumé\"&& IGroup=\"Carte Mère\" ";
$query2="SELECT * FROM item WHERE ReportID=\"$P\"&& IPage=\"Résumé\"&& IGroup=\"Moniteur\" ";
$query3="SELECT * FROM item WHERE ReportID=\"$P\"&& IPage=\"Résumé\"&& IGroup=\"Multimédia\" ";
$query4="SELECT * FROM item WHERE ReportID=\"$P\"&& IPage=\"Résumé\"&& IGroup=\"Stockage\" ";
$query5="SELECT * FROM item WHERE ReportID=\"$P\"&& IPage=\"Résumé\"&& IGroup=\"Partitions\" ";
$query6="SELECT * FROM item WHERE ReportID=\"$P\"&& IPage=\"Résumé\"&& IGroup=\"Entrée\" ";
$query7="SELECT * FROM item WHERE ReportID=\"$P\"&& IPage=\"Résumé\"&& IGroup=\"Réseaux\" ";
Ou bien d'optimiser cela:
$result1=mysql_query($query1)or die (mysql_error());
$result2=mysql_query($query2)or die (mysql_error());
$result3=mysql_query($query3)or die (mysql_error());
$result4=mysql_query($query4)or die (mysql_error());
$result5=mysql_query($query5)or die (mysql_error());
$result6=mysql_query($query6)or die (mysql_error());
$result7=mysql_query($query7)or die (mysql_error());
Est ce qu'on peut utiliser une boucle for ou qqch dans le genre, et comment faire aussi?