Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
967 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Casse Tête SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Casse Tête SQL

n°1223988
gdrara
Posté le 16-10-2005 à 15:25:46  profilanswer
 

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
 

mood
Publicité
Posté le 16-10-2005 à 15:25:46  profilanswer
 

n°1224006
betsamee
Asterisk Zeperyl
Posté le 16-10-2005 à 16:35:02  profilanswer
 

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

n°1224097
gdrara
Posté le 16-10-2005 à 20:16:43  profilanswer
 

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

n°1224098
betsamee
Asterisk Zeperyl
Posté le 16-10-2005 à 20:19:43  profilanswer
 

non cela doit marcher comme cela

n°1225257
Arjuna
Aircraft Ident.: F-MBSD
Posté le 18-10-2005 à 11:56:27  profilanswer
 

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

n°1225714
betsamee
Asterisk Zeperyl
Posté le 18-10-2005 à 20:02:38  profilanswer
 

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  

n°1225813
mrbebert
Posté le 18-10-2005 à 22:51:55  profilanswer
 

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 )

n°1225854
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-10-2005 à 00:56:56  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Casse Tête SQL

 

Sujets relatifs
Erreur lors de la création d'une BD SQL sous win.Aide requête SQL Access
en PL/SQL comment lire des informations dans un fichier INI[SQL Server]Journal des transactions de TempDB
[RESOLU][Access / SQL] Erreur OVERFLOW lors de l'update de ma BDD ![RESOLU][SQL/Access]Impossibilité de modifier le contenu de mes tables
[SQL Server] Scheduled Backupexécuter un script de migration de données entre bases SQL
[SQL] Erreur #306 sur Requete comparant 2 mémo ! Help plzSQL Server 2000 : migration vers un nouveau server
Plus de sujets relatifs à : Casse Tête SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR