begin process at 2010 02 09 22:40:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Besoin d'aide pour ma base de données

 > 

Organiser le desordre


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Organiser le desordre

mercredi 29 mars 2006 à 09:04:22 | Organiser le desordre

TTMan

Membre Club
Bonjour,
(J'ai posé cette question sur aspfr.com et l'on m'a conseillé de la poser ici, merci de votre aide).

Je vous expose mon problème, qui cherche la meilleur solution du point de vue performances.

J'interroge une base de données (SQL SERVER) depuis mon codebehind en C# (ASP.net) pour obtenir une liste de produits triés par prix.
J'ai plusieurs champs, dont le prix et le producteur, qui sont retournés. Je souhaite ensuite afficher les produits en liste en organisant un desordre qui aura pour effet de créer de la diversité dans ladite liste au niveau du champs "producteur".
Pour faire ce desordre, je voudrais en fait que la liste soit triée par prix tout en mélangeant les fabricants. Le trix par prix ne doit pas être stric, il y a une fourchette de 5 euros qui fait qu'on considère qu'on est dans le même ordre de prix. Et j'aimerais que la répétition du même producteur se fasse 3 fois maximum...

Exemple de ma liste actuelle triée par prix:
pomme - 5 euros - producteur1
poire - 5.5 euros - producteur1
toto - 6 euros - produsteur1
...(autant de produit que voulu sans dépasser le prix de la ligne qui suit)...
titi - 7 euros - producteur2
tata - 7.80 euros - producteur2

Exemple de ce que je souhaite avoir:
pomme - 5 euros - producteur1
poire - 5.5 euros - producteur1
toto - 6 euros - produsteur1
titi - 7 euros - producteur2
...(de 1 à 3 produits d'un autre producteur)...
titi - 7.8 euros - producteur2

Si quelqu'un a une idée, je suis preneur.
A l'heure actuelle je récupère la liste triée par prix issue de ma requête SQL du type
Select * from TABLE where type='typeproduit' ORDER BY prix

Merci.
TTMan
mercredi 29 mars 2006 à 09:45:33 | Re : Organiser le desordre

Mindiell

Tu peux redonner un exemple un peu plus concret ? J'ai une idée, mais je veux etre sur d'avoir bien compris...
mercredi 29 mars 2006 à 11:37:59 | Re : Organiser le desordre

TTMan

Membre Club

Euh, plus concret je sais pas si c'est ce qui va suivre, mais un peu plus complet...

J'ai 3 champs (désignation, prix, producteur) dans la table (articles), pour obtenir les enregistrements je fais ceci:
SELECT * FROM articles ORDER BY prix

Liste de base ainsi obtenue:
pomme1     5euros            producteur1
pomme2     5.5 euros        producteur1
poire          5.5 euros        producteur1   
quetsch            6 euros      producteur1
pomme_alpha   7 euros      producteur2  
peche         7 euros      producteur3
quetsch_2           7 euros      producteur1
pomme_beta      8 euros      producteur2
abricot            11euros producteur2


et j'aimerais pouvoir afficher une liste de ce type:
pomme1     5euros            producteur1
pomme2     5.5 euros        producteur1
poire          5.5 euros        producteur1         (là, si je suis à +/- 5euros il faut changer de producteur parce que je l'ai trois fois de suite)
pomme_alpha   7 euros      producteur2      (on peut avoir 3 fois de suite le producteur 2 ou aller à un autre producteur si le producteur2 s'éloigne trop en terme de prix)
peche         7 euros      producteur3  (le producteur 3 a un article au même prix que le précédent)
quetsch            6 euros      producteur1
quetsch_2           7 euros      producteur1 (ici j'imagine que je n'ai plus d'articles du producteur 1, donc je prend l'article qui est au prix le plus proche et qui suit)
pomme_beta      8 euros      producteur2  (cet article aurait aussi pu être placé après celui du producteur3 à 7 euros, si ça simplifie le codage)
abricot            11euros producteur2


J'espère que ce n'est pas trop embrouillé.
Merci


mercredi 29 mars 2006 à 22:43:07 | Re : Organiser le desordre

Mindiell

Warf, c'est un peu le bordel, mais je pense comprendre, je réfléchis à ca cette nuit, je reposte demain matin... ;o)
jeudi 30 mars 2006 à 13:41:14 | Re : Organiser le desordre

Mindiell

Bon, il faut trier sur autre chose que le prix, forcément. Essaye un truc comme ca : SELECT *, (((5*rand())-2.5)*prix) AS tri FROM tatable ORDER BY tri on s'occupera des 3 fournisseurs une autre fois ;o)
jeudi 30 mars 2006 à 13:54:26 | Re : Organiser le desordre

TTMan

Membre Club
Ok je vais tester, je te remercie déjà de ton aide.
jeudi 30 mars 2006 à 14:45:49 | Re : Organiser le desordre

TTMan

Membre Club

J'ai testé et... le tri se fait comme par le prix sauf que parfois c'est croissant, parfois décroissant parce que tri est positif ou négatif... Je pense que ça vient de la fontion rand().

Le hic, c'est que pour l'instant ça n'a pas résolu mon problème :-)

jeudi 30 mars 2006 à 15:01:38 | Re : Organiser le desordre

Mindiell

Oups !!! SELECT *, (((5*rand())-2.5)+prix) AS tri FROM tatable ORDER BY tri Il faut mettre un '+', pas un '*' !!! :o) Ré-essaye comme ca ?
jeudi 30 mars 2006 à 15:18:41 | Re : Organiser le desordre

TTMan

Membre Club
Ok, là on retrouve le même fonctionnement qu'avec le ORDER BY prix, il n'y a plus l'effet croissant / décroissant. L'idée du rand() m'a fait fouiller un peu sur le net et j'ai trouvé que rand() génère une valeur pour chaque ligne avec MySQL, mais sous SQL Server ça n'en génère qu'une pour le lot d'enregistrement retourné... Celà explique donc pourquoi dans l'immédiat je me retrouve avec une requete évoluée qui me retourne la même chose qu'au départ...
jeudi 30 mars 2006 à 15:26:33 | Re : Organiser le desordre

Mindiell

Arg ! Il m'en veut SQL aujourd'hui :o) Et si tu essayes un truc genre : SELECT *, (((5*rand(id))-2.5)+prix) AS tri FROM tatable ORDER BY tri Comme ca, tes id étant tous différents, tu auras l'impression d'avoir du hasard. En même temps, les mêmes produits s'afficheront toujours dans le même sens (ce qui est pas plus mal)... Alors ? ^^

1 2

Cette discussion est classée dans : liste, prix, euros, desordre, producteur


Répondre à ce message

Sujets en rapport avec ce message

liste des tables [ par Mouffi ] Bonjour,Je voudrais recuperer le nom des tables d'une base SQl serveur 2000 depuis un programme vb.netmerci d'avance Requete de selection (ligne autoincrementer) [ par joetecher ] --------------------------------------------------------------------------------Salut à tous Voila j'ai un table qui s'appelle " Produits " avec les c Help pour une requete !!! [ par Rouk ] Bonjour,Je developpe une application en vb.net qui a une connection a un serveur SQL.Dans mon application, je remplis un datagrid par une requete, voi liste des requetes sous oracle V6 [ par enrageur ] Je cherche un site ou je pourais trouver la liste des requetes pour programmer sous Oracle V6.Merci MSDN Like [ par AbriBus ] Bonjour,Voila, je voudrais réaliser un répertoire avec une liste (contenant les mots repertoriés, non modifiable, a éléments sellectionnables en choix Requete avec un loop [ par Rouk ] Bonjour, Je dois realiser un script qui recupere les donnees d'une table pour les afficher dans une autre suivant une condition.Exemple :table 1 : num requête sql (update avec deux bases) [ par jee0404 ] Bonjour,            Je veux pouvoir updater le prix de mes enregistrements de la base de donnée 1 avec les prix de la base de donné 2 , si le champ it Un group by me resiste [ par ManuAntibes ] Salut à tousJe veux mettre un groupe By dans mon jeu d'enregitrement , il n'en veut pas !!!!voici mon jeu d'enregistrementDim Re_liste_prenom__MMColPa liste déroulante [ par Axelles ] Ma liste déroulante est liée à un groupe d'option. Comment je pourrais faire pour obliger l'utilisateur à saisir la donnée dans ma liste déroulante sa Relevez le défi - SQL pour loterie [ par bergueira ] Bonjour.J' ai mis en sujet 'Relevez le défi car je crois que c' est vraiment un défi ce que je vaux ! ;) ).J' ai besoin d'un query (en SQL pour la pla


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales