|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 6 ![]() |
Bonjour à tous,
Voici mon problème en MySQL : Une première table liste des séries de photos (id_serie, libelle, tri_serie) Une deuxième table liste les photos (id_serie, filename, tri_photos) J'aimerais lister les séries dans l'ordre tri_serie, avec, pour illustrer chaque serie, la première photo s'y rattachant (la première étant identifiée par le champ tri_photos). Exemple : Table series (id_serie, libelle, tri_serie) : 1 : Couchers de soleil : 2 2 : Natures mortes : 3 3 : Paysages : 4 4 : Noir et Blanc : 1 Table photos (id_serie, filename, tri_photos) : 1 : tahiti.jpg : 2 2 : pomme.jpg : 4 1 : hawai.jpg : 1 3 : plage.jpg : 3 J'ai essayé : Code :
1 : Noir et Blanc : NULL 2 : Couchers de soleil : tahiti.jpg 3 : Natures mortes : pomme.jpg 4 : Paysages : plage.jpg Résultat souhaité : 1 : Noir et Blanc : NULL 2 : Couchers de soleil : hawai.jpg 3 : Natures mortes : pomme.jpg 4 : Paysages : plage.jpg J'ai essayé des tas d'autres combinaisons que la décence m'interdit de reproduire ici ! Pouvez-vous m'aider avant que je ne devienne fou ?
|
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Bonjour,
Comment sont générés les nombres de la colonne tri_photo dans la table "Table photos" ? Y-a-t-il des doublons possible dessus ? Comment choisissez-vous cette "1ere" photo ? est-ce une photo au hasard ou la retrouve-t-on avec un critère précis ? |
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
En rajoutant le critère tri_photos dans la condition de jointure ça devrait répondre à ton besoin:
Code :
|
||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 6 ![]() |
Bonjour,
Le champ tri_photos est séquentiel (donc sans doublon normalement), et est généré par un outil en Ajax qui réordonne les photos selon les besoins de l'administrateur. |
|
|
00
|
|
|
#5 | |||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Citation:
Il ne commence pas à 1 à toutes les séries, d'où mes questions précédentes. |
|||
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 6 ![]() |
Ben non, ça ne fonctionne pas skuatamad.
J'obtiens : 1 : Noir et Blanc : NULL 2 : Couchers de soleil : hawai.jpg 3 : Natures mortes : NULL 4 : Paysages : NULL |
|
|
00
|
|
|
#7 | ||||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Citation:
Si c'est trop lent il faudra voir pour une autre solution : Code :
resulta obtenu : Citation:
|
||||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 6 ![]() |
C'est déjà bien mieux que ce que j'obtenais.
Merci punkoff. Mais j'aimerais, qu'en plus, le tout soit trié selon tri_serie. C'est curieux comme l'énoncé semble super simple et la réalisation si complexe ! |
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Citation:
Si je trouve plus simple je posterai une autre solution (ou quelqu'un d'autre plus alaise avec MySql le fera). Citation:
|
||
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : octobre 2008 Messages : 1 504 ![]() |
Pourquoi il y aurait un LEFT JOIN ici au lieu d'un simple JOIN? L'énoncé du problème qui dit "la première photo s'y rattachant" semble plutôt impliquer qu'on n'affiche pas une série qui n'aurait aucune photo (à supposer que ça existe).
Sinon le principe d'aller chercher le MIN(tri_photos) par série, et ensuite de joindre une nouvelle fois avec photo pour retrouver le nom de fichier correspondant est effectivement une bonne solution pour ce problème, qui devrait fonctionner avec mysql ou n'importe quoi d'autre qui permette les sous-requêtes. |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 6 ![]() |
Si si, on doit afficher une série qui n'aurait aucune photo :
Résultat souhaité : 1 : Noir et Blanc : NULL 2 : Couchers de soleil : hawai.jpg 3 : Natures mortes : pomme.jpg 4 : Paysages : plage.jpg |
|
|
00
|
|
|
#12 | |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Car dans l'énoncé il stipule :
Citation:
|
|
|
|
00
|
|
|
#13 | ||
![]() ![]() |
Essaie cette requête :
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
|
|
|
#14 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 6 ![]() |
Ca marche super bien !
Merci beaucoup CinePhil et punkoff ! Je ne m'attendais pas à ce que la requête soit si complexe et je comprends mieux maintenant pourquoi je calais. Quelque part, c'est rassurant ! |
|
|
00
|
|
|
#15 |
![]() ![]() |
Elle n'est pas si complexe que ça !
La sous-requête cherche la référence de la première photo de chaque série et la sur-requête récupère son filename.
__________________
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
|
Copyright © 2000-2012 - www.developpez.com