[MySQL] Select degressif

Select degressif [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 28-04-2005 à 11:27:27    

Sujet pas très clair, mais voilà mon problème :
 
Dans ma table, 5 champs : champ_1 ... à champ_5
A l'intérieur de ces champs, des valeurs de 1 à 10, sachant que l'on peut avoir les mêmes valeurs dans les differents champs.
 
L'utilisateur selectionne de 1 à 5 champs, pour chaque champ selectionné il selectionne une valeur de 1 à 10, et je veux que le résultat de sortie soit les enregistrement où le champ 1 est trouvé au moins une fois, puis le champ 2 au moins une fois dans les restants... et ainsi de suite...
 
Exemple : l'utilisateur choisit 2 champs, pour lesquels il veut la valeur 3 (il choisit donc 3 pour les deux). Je voudrais tous les enregistrements qui contiennent au moins 2 fois le nombre 3 (et donc pas ceux où il n'apparait qu'une fois).
 
Je peux gerer ça en SQL, ou vaut mieux passer par le sinstructions php directement ?
Merci de votre aide.

Reply

Marsh Posté le 28-04-2005 à 11:27:27   

Reply

Marsh Posté le 28-04-2005 à 11:28:25    

J'ai rien compris du tout....

Reply

Marsh Posté le 28-04-2005 à 11:40:20    

lol, ca m'étonne pas, j'ai toujours été nul en explications...
 
Imagine que c'est pour afficher des recettes de cuisine avec maxi 5 ingredients. Dans la base, les enregistrements sont donc les recettes, 5 champs = 5 ingredients.
 
Ensuite, l'utilisateur choisi le nombre d'ingredients (sous entendu, ceux qu'il a à dispo), puis precise lesquels c'est.
 
Donc ma requête doit me trouver quelles recettes sont adaptées, sachant que s'il précise 2 fois le même ingredient, il faut une recette qui l'utilise au minimum 2 fois.
 
C'est plus clair ?

Reply

Marsh Posté le 28-04-2005 à 11:46:38    

Avec les fonctions d'aggrégation, tu devrais t'en sortir.
 
Un truc genre (à adapter à la sauce MySQL) :
 

Code :
  1. select champ_1, champ_2, ..., champ_n
  2. from table
  3. group by champ_à_grouper
  4. having count(champ_à_grouper) >= nombre_minimum_d'occurences


Message édité par Elmoricq le 28-04-2005 à 11:49:13
Reply

Marsh Posté le 28-04-2005 à 11:57:05    

Intéressant, mais le problème est que je ne sais pas combien d'ingredient du type X seront présents. Même avec deux valeurs équivalentes, ils restent deux ingredients différents...
Ton idée m'ouvre une perspective intéressante, mais peut être compliquée à mettre en place...
 
 
En fait, un exemple de comment ca tourne ici :
http://lamesheroes.free.fr/recettes.php
 
Ca marche pour 1, ca marche pour + de 1 uniquement si les champs selectionnés sont différents (or ils doivent pouvoir être identiques).


Message édité par Jotunheim le 28-04-2005 à 12:02:54
Reply

Marsh Posté le 28-04-2005 à 12:18:09    

Jotunheim a écrit :

Intéressant, mais le problème est que je ne sais pas combien d'ingredient du type X seront présents. Même avec deux valeurs équivalentes, ils restent deux ingredients différents...


 
 :??:  
Je ne comprends pas ce que tu cherches à faire, et l'exemple sur ton site n'est pas très parlant non plus (si ce n'est que ça ressemble à de l'alchimie pour WoW :D )
 
 
EDIT : ah si, j'ai compris. Dans ce cas, tu devrais générer ta requête dynamiquement en PHP, ce sera bien plus simple.


Message édité par Elmoricq le 28-04-2005 à 12:20:08
Reply

Marsh Posté le 28-04-2005 à 14:05:18    

C'est pour un dérivé de Wow, mais c'es bien de l'alchimie...
Justement, je veux générer ma requete en PHP, ca c'est pas le pb... Mon pb c'est que je sais pas à quoi elle doit ressembler au final. Si j'ai la bonne requete (qui marche avec un exemple), je saurais la construire en php...

Reply

Marsh Posté le 28-04-2005 à 14:06:36    

Tel que je vois la chose, tu dois compter les occurences d'une chaîne en PHP pour déterminer le nombre d'occurences à tester dans la requête.
 
Ou un truc dans le genre, j'ai pas vraiment de visibilité sur ton programme.


Message édité par Elmoricq le 28-04-2005 à 14:06:44
Reply

Marsh Posté le 28-04-2005 à 14:15:15    

Mouais... Ca s'éclaircit un peu dans ma tête, je te remercie...

Reply

Marsh Posté le 28-04-2005 à 17:49:54    

Comme le SQL et moi ca fait un peu 2, comment je selectionne les enregistrements qui ont 3 fois "toto" si j'ai
 

Code :
  1. +++++++++++++++++++++++++++++++++++++++++++++++++++
  2. idenr + champ1 + champ2 + champ3 + champ4 + champ5+
  3. +++++++++++++++++++++++++++++++++++++++++++++++++++
  4.    1  + toto   + titi   + tutu   + toto   + toto  +
  5. +++++++++++++++++++++++++++++++++++++++++++++++++++
  6.    2  + toto   + leon   + toto   + titi   + tutu  +
  7. +++++++++++++++++++++++++++++++++++++++++++++++++++


 
On ne doit avoir que l'enregistrement 1, mais je ne vois pas quelle peut être la requete à faire...


Message édité par Jotunheim le 28-04-2005 à 19:48:45
Reply

Sujets relatifs:

Leave a Replay

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