8791 sujets

Développement web côté serveur, CMS

Bonsoir à tous,

Voila je revient encore une fois vers vous pour un souci au niveau de mon site.
Suite à mon poste
http://forum.alsacreations.com/topic-20-46256-1--Resolu--Regrouper-champ-identique-dune-meme-table-mysql.html j'ai pas mal avancé (Merci à Heyoan) mais la je me retrouve encore avec un souci

Explications : Voila j'ai une table article ou je rentre tous les articles disponible sur le site avec le prix du neuf le titre etc. Ensuite j'ai un table vente ou dedans j'ai l'id du membre qui vent l'article l'id de l'article le prix que la personne vend l'article etc etc.

Sur la page ou j'affiche les article je fait un $sql="SELECT * FROM article"; (j'ai laisser le * juste pour les test) mais je voudrais pouvoir classer les articles par ordre en fonctions de l'article qui a le prix le plus bas (prix qui est dans la table vente je voudrais prendre le prix le plus bas selon les vendeurs et non le prix de départ ) est j'arrive pas à faire cette requête je c'est même pas si c'est possible ....

Merci d'avance !

@Bientôt et bonne soiré
Modifié par Viva25 (30 Jan 2010 - 18:41)
Salut,

déjà je te redonne le lien que je t'avais déjà donné pour les bases de SQL : http://sqlpro.developpez.com/ (si tu ne prends pas le temps de décortiquer les exemples tu vas vraiment galérer Smiley cligne ).

Ensuite ce serait plus simple de nous donner la structure exacte des tables (au passage c'est une table)...

Et pour finir ta demande n'est pas très claire car avec SELECT * FROM article tu vas lister tous les articles sans savoir s'ils sont ou non disponibles à la vente et d'autre part ça ne me semble pas très pertinent d'afficher directement tous les articles en vente même s'ils sont triés par ordre de prix. J'aurais plutôt opté pour 2 affichages :

* le premier liste tous les articles en vente (en affichant le meilleur prix de chaque article) :
SELECT v.id_article, libelle_article, min(prix) FROM ventes v JOIN articles a ON v.id_article = a.id_article GROUP BY v.id_article ORDER BY libelle_article


* le second affiche, pour un article sélectionné, tous les prix disponibles :
SELECT prix FROM ventes WHERE id_article = 33 ORDER BY prix
Salut heyoan merci pour le lien je suis de permanence cette après midi je vais prendre mon pc avec mon (et mon iphone pour avoir le net ^^) et je vais en profité pour lire tous ça !

Heyoan a écrit :
SELECT v.id_article, libelle_article, min(prix) FROM ventes v JOIN articles a ON v.id_article = a.id_article GROUP BY v.id_article ORDER BY libelle_article


Je viens de tester selon ma table est ça roule parfaitement c'est exactement ce que je chercher.
Encore merci de ton aide je vais bien lire la documentation du site et si vraiment j'ai un souci je reviendrais poster. Smiley cligne
Modifié par Viva25 (30 Jan 2010 - 09:22)
Viva25 a écrit :
je vais bien lire la documentation du site et si vraiment j'ai un souci je reviendrais poster.
Pani problem !

Si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. Smiley cligne
Modifié par Heyoan (30 Jan 2010 - 09:29)
Voila je vient demander de l'aide car j'ai pas réussi à faire ce que je voulait.
Alors pour chaque produit j'arrive bien à récupérais le prix le moins cher. Mais maintenant je souhaiterais pourvoir classer les articles par ordre du prix le moins cher au plus cher au plus cher mais je me retrouver avec un souci voila ma requête :

SELECT v.idArticle, v.idVente, v.timestamp, titre_article, annee_article,plateforme_article, editeur_article, image_article, prix_origine_article , min(prix_vente) FROM vente v JOIN article a ON v.idArticle = a.idArticle GROUP BY v.idArticle ORDER BY prix_vente


Il m'affiche par exemple :

Meilleur prix : 19.99€
Meilleur prix : 39.99€
Meilleur prix : 29.99€
Meilleur prix : 59.99€

J' ai essayer :

SELECT v.idArticle, v.idVente, v.timestamp, titre_article, annee_article,plateforme_article, editeur_article, image_article, prix_origine_article , min(prix_vente) FROM vente v JOIN article a ON v.idArticle = a.idArticle GROUP BY v.idArticle ORDER BY min(prix_vente)


Mais la y me sort une erreur dans mysql :
MySQL a répondu:Documentation
#1111 - Utilisation invalide de la clause GROUP

Je regarde le site que tu ma donner heyoan mais je trouve pas de solution à mon souci !
Modifié par Viva25 (30 Jan 2010 - 16:29)
J'ai trouvé la solution j'ai rajouter un alias sur min(prix_vente) du coup ça marche voila ma requête :
SELECT v.idArticle, v.idVente, v.timestamp, titre_article, annee_article,plateforme_article, editeur_article, image_article, prix_origine_article , min(prix_vente) AS pv FROM vente v JOIN article a ON v.idArticle = a.idArticle GROUP BY v.idArticle ORDER BY pv


Par contre maintenant comment faire pour classer les articles par date de création c'est a dire toujours garder le prix le plus bas de chaque article mais maintenant les classer par rapport au timestamp le problème et que avec GROUP BY il me récupère toujours le premier enregistrement et non le dernier pourquoi ?
Bon je cloture le sujet j'ai trouvé la solution à mon souci !
Modifié par Viva25 (30 Jan 2010 - 19:26)