requete SQL imbriquée

requete SQL imbriquée - SQL/NoSQL - Programmation

Marsh Posté le 11-04-2008 à 01:20:16    

bonjour,
je suis en train de passer beaucoup de temps sur une requete:
voici les 2 tables:
 
PRODUIT
-id
-nom
 
PRIX
-id
-idproduit
-prix
-date_insertion
 
 
comme vous le voyez les 2 tables sont reliées par id et idproduit.
j'ajoute des prix avec la date dans la table PRIX.
 
je voudrais recuperer tous mes produits avec le prix le plus récent pour chacun.
 
j'ai tenté des choses de ce genre mais sans succes

Code :
  1. SELECT id, idproduct, calendar
  2. FROM historize
  3. where idproduct in (
  4.     select idproduct
  5.     from historize
  6.     group by idproduct
  7.     )
  8. group by idproduct
  9. ORDER BY id DESC


 
j'ai pensé à la fonction MAX( ) mais elle me renvoie toujours le plus grand resultat. Donc ce qui me viens à l'esprit est de classer les les dates par ordre et de faire un "LIMIT 0,1"

Reply

Marsh Posté le 11-04-2008 à 01:20:16   

Reply

Marsh Posté le 11-04-2008 à 01:28:28    

Code :
  1. SELECT prd.id, prd.nom, prx.date_insertion, prx.prix
  2. FROM produit prd
  3. INNER JOIN prix prx ON prx.produit_id = prd.id
  4. WHERE prx.date_insertion = (
  5.  SELECT max(pr2.date_insertion)
  6.  FROM prix pr2
  7.  WHERE pr2.produit_id = prx.id
  8. )


 
Accessoirement, vire ce ID de la table PRIX, et crée une clé composite sur PRIX (PRODUIT_ID, DATE_INSERTION)

Reply

Marsh Posté le 11-04-2008 à 03:03:48    

fantastique, merci beaucoup!
 
EDIT:
 
Cette requête me permet de récupèrer la liste des produits avec les prix et leur code. Mais tous les produits sont mélangés quelque soit le fournisseur du produit (champ fournisseur dans la table produit).
Je souhaite afficher la liste des produits avec les prix pour chaque fournisseur, avec la possibilité de trier les prix dans l'ordre croissant ou décroissant pour l'un ou l'autre des fournisseurs
Pour être un peu plus explicite:
 
nom produit   | fournisseur1 | fournisseur2 | fournisseur3
prod1           |       12                 54                65
prod2           |       23                 43                 4
 
encore merci!


Message édité par NewbeInIT le 11-04-2008 à 08:33:53
Reply

Marsh Posté le 11-04-2008 à 09:18:05    

ben rajoute une jointure avec ta table des fournisseurs :spamafote:
 
va faire un tour sur le premier lien de ma signature pour une explication plus en détail de quelques notions de SQL qui devraient t'aider.

Reply

Sujets relatifs:

Leave a Replay

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