Casse Tête SQL

Casse Tête SQL - SQL/NoSQL - Programmation

Marsh Posté le 16-10-2005 à 15:25:46    

Salut à tous
 
J'ai besoin de vos lumières en sql.
Je suis bloqué sur un soucis : j'ai 2 tables, une table qui contient des produits (avec un id), une autre qui contient la liste des ids des produits en promo.
Je voudrais lister la liste des produits, classé par ordre alphabétique, mais avec les produits en promo en premier.
 
Je suis sous MySql.
 
Quelqu'un a une idée ?
Merci bcp
 

Reply

Marsh Posté le 16-10-2005 à 15:25:46   

Reply

Marsh Posté le 16-10-2005 à 16:35:02    

c'est pas tres academique mais un truc du style devrait donner le resultat que tu desires :

Code :
  1. SELECT produits.id,produits.nom
  2. FROM promos LEFT JOIN produits ON produits.id=promos.id
  3. UNION
  4. SELECT produits.id,produits.nom
  5. FROM produits LEFT JOIN promos ON produits.id=promos.id

Reply

Marsh Posté le 16-10-2005 à 20:16:43    

Salut betsamee,  
la ligne 2 de ton code : faut pas mettre plutot produits comme table ?

Reply

Marsh Posté le 16-10-2005 à 20:19:43    

non cela doit marcher comme cela

Reply

Marsh Posté le 18-10-2005 à 11:56:27    

FULL JOIN ne marche toujours pas sous MySQL ? (ça remplace avantageusement ce code, en effectuant directement la jointure ouvert des deux côtés)

Reply

Marsh Posté le 18-10-2005 à 20:02:38    

Arjuna a écrit :

FULL JOIN ne marche toujours pas sous MySQL ? (ça remplace avantageusement ce code, en effectuant directement la jointure ouvert des deux côtés)


non c'est "en projet pour les versions futures"  :D  

Reply

Marsh Posté le 18-10-2005 à 22:51:55    

Et quelque chose du genre :
 
SELECT produits.id, produits.nom    
FROM produits
LEFT JOIN promos ON produits.id=promos.id
ORDER BY ISNULL(promos.id) ASC, produits.id ASC
 
On fait la jointure avec les promos, et on met en premier ceux pour lesquels on a effectivement trouvé l'id en promo [:figti]  
(bien sur, faut pas qu'un produit apparaisse plusieurs fois dans la table promos :D )

Reply

Marsh Posté le 19-10-2005 à 00:56:56    

where promos.id is null est plus simple, et on n'a que les lignes qu'on veut normalement


Message édité par Arjuna le 19-10-2005 à 00:57:15
Reply

Sujets relatifs:

Leave a Replay

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