SELECT MIN() avec le bon identifiant - SQL/NoSQL - Programmation
Marsh Posté le 01-04-2011 à 10:19:27
Essaye ca:
Code :
|
Marsh Posté le 01-04-2011 à 11:24:42
ou bien (pour mysql, à adapter suivant le SGBD)
Code :
|
Si tu as un index (prix ASC, reduction DESC), ta requête va directement chercher la valeur min dedans sans parcourir la table.
Lance un explain sur les différentes requêtes, ça devrait être flagrant ...
Marsh Posté le 01-04-2011 à 13:38:13
Merci pour vos reponses.
Paulp: ta requete ne marchera pas dans mon cas car elle m'affichera qu'un seul produit, or il me faut afficher tout le catalogue...
Oliii: la requete marche bien, je vais la tester davantage et te tiendrai informé.
Merci pour tout
Marsh Posté le 01-04-2011 à 14:39:45
Oliiii a écrit : Essaye ca:
|
La requete fonctionne parfaitement mais j'ai un peu de mal a l'adopter a mes besoins
voici ma requete initiale simplifiee:
Code :
|
comment integreras tu ta requete sachant que je regroupe les produits par identifiant et par matiere??
Marsh Posté le 04-04-2011 à 08:43:43
L'idée c'est de faire un sous select qui sort le prix minimum et suffisement d'info pour retrouver l'enregistrement dans la table (id_produit dans mon cas).
C'est le meme principe dans ton 2eme exemple mais au lieu d'avoir une seule table dans le sous select, tu auras aussi tout les joins et le where.
C'est difficil de t'aider plus sans un exemple concret des données et de la structure des tables.
Marsh Posté le 07-04-2011 à 17:18:51
Hello,
J'ai détecter un cas ou la requête ne marchera pas bien
Code :
|
la requête me retournera 2 fois 1001 car le prix final est le même!
La solution que j'ai trouvé est de rajouter un GROUP BY id_prod a la fin, mais est ce bon?
J'aurais encore 1 toute petite question svp:
Concernant les commandes, je prévois 2 tables:
1- commandes (id_commande, id_client, frais_livraison, date, ...)
2- commandes_details (id_commande, id_prod_ref, quantite, prix, reduction)
Dois-je rajouter un champ prix_total dans la table commande ou devrais je plutôt le récupérer avec un SUM() sur la table commande_details??
Pareil sur la table commandes_details, dois je mettre un champ prix_reduction ou plutôt le calculer a partir des champs prix et reduction??
Merci
Marsh Posté le 08-04-2011 à 09:01:20
Sauf si tu as un probleme de performance, il ne faut pas mettre de colonne qui peuvent etre calculée a partir d'autre colonne (ca implique une maintenance et un risque de casser l'integrité de la DB).
Marsh Posté le 08-04-2011 à 17:39:57
Oliiii a écrit : Sauf si tu as un probleme de performance, il ne faut pas mettre de colonne qui peuvent etre calculée a partir d'autre colonne (ca implique une maintenance et un risque de casser l'integrité de la DB). |
ah!! je ne sais toujours pas quoi faire alors, je ne pourrai pas savoir si je serai confronté a des problemes de performance!! que ferais tu a ma place? je suis en mutualisé Pro chez 1 and 1
et sinon concernant ma 1ere question au sujet de la requete, que faut il faire?
Marsh Posté le 08-04-2011 à 17:54:29
http://dev.mysql.com/doc/refman/5. [...] p-row.html
Dans ce cas, il faudra à mon avis stocker (et même indexer) le prix après réduction.
Pour les problèmes de performance, tu le vois à l'utilisation. Si une page met plus d'1s à charger, tu analyses pourquoi et tu résouds le problème.
Marsh Posté le 01-04-2011 à 05:51:16
Bonjour tout le monde,
j'ai une table qui ressemble a ceci:
j'aimerais afficher la ligne qui contient le prix le plus bas mais AVEC SON identifiant. j'ai fait ceci:
La requete fonctionne bien, elle me retourne les resultats suivant:
mais j'aimerais qu'il me retourne l'id_produit_ref 10152 au lieu de 10150 et 10154 au lieu de 10153
Sauriez vous comment faire?
MErci infiniment