|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Développeur Web Inscription : mai 2011 Messages : 3 ![]() |
Bonjour,
Ca fait déjà plusieurs heures que j'essaie de construire une requête et je n'arrive pas à récupérer les bonnes valeurs J'ai donc besoin d'un besoin d'aide si possible. Voilà j'ai une table mysql livres avec les données suivantes : livre 1 en livre 1 fr livre 2 it livre 1 it livre 3 fr J'essaye de faire une requete qui me renvoie les livres 1, 2 et 3 avec une langue de "préférence". Si la langue de préférence n'existe pas, l'anglais doit etre choisis, sinon s'il n'existe pas non plus ça récupère le livre en italien, et ainsi de suite. Toutes les livres n'existent pas forcément dans toutes les langues. Dans mon exemple je voudrais récupérer cela : (ma langue de préférence est francais, puis anglais, puis italien) livre 1 fr livre 2 it livre 3 fr J'ai essayé avec ORDER BY FIELD(langue, "fr", "en", "it") mais ça me renvoie livre 1 fr livre 1 en livre 1 it livre 2 it livre 3 fr Le problème est que le livre 1 est renvoyé 3 fois. Et le problème ne se règle pas avec un GROUP BY car il est exécuté avant le tri. |
|
|
00
|
|
|
#2 | ||
|
Membre éprouvé
![]() Étudiant Inscription : avril 2011 Messages : 317 ![]() |
Bonjour,
Voici une requête qui fonctionne. Ce n'est pas très propre, mais ça peut te dépanner : (j'ai supposé que ta table s’appelait 'livres' et les champs 'nom' et 'prix') Code :
|
||
|
|
00
|
|
|
#3 | ||
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Si cette requête donne le résultat attendu, c'est un pur coup de chance...
En effet, ne peut pas donner le résultat attendu (voir le tutoriel suivant : http://cedric-duprez.developpez.com/...fier-group-by/). Essaie plutôt la requête suivante, qui a plus de chance de donner à tous les coups le résultat attendu : Code :
ced
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Développeur Web Inscription : mai 2011 Messages : 3 ![]() |
J'ai tenté la solution de Nheo_ et ça fonctionne, mais je comprends bien que le résultat n'est pas fiable.
Donc je vais essayer de changer et d'utiliser CASE (que je n'ai jamais utilisé et dont j'ignore le fonctionnement :p donc go google. Mais si quelqu'un a un bon tutoriel dessus je suis preneuse). Merci beaucoup pour vos réponses |
|
|
00
|
|
|
#5 | ||||||||
![]() ![]() |
Il y a deux formes pour utiliser CASE.
1) Code :
Code :
1) Code :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||||||||
|
00
|
|
|
#6 |
|
Invité de passage
![]() Développeur Web Inscription : mai 2011 Messages : 3 ![]() |
Ça marche nickel avec CASE ! Merci beaucoup, depuis le temps que je cherche ça fait vraiment plaisir
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com