|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : août 2008 Messages : 34 ![]() |
'soir tout le monde.
Voilà 3 heures que je cherche (avec ma tête, google et ce forum) sans trouver de solution, je vous la fait courte : 1 table id_index , id_index_parent , rien_a_voir 1 , 0 , blabla 2 , 1 , blabla 3 , 1 , blabla 4 , 0 , blabla 5 , 4 , blabla ... ... id_index : index unique auto-incrémenté id_index_parent : index pouvant pointer vers id_index si id_index à un lien de parenté, si aucun lien de parenté alors 0 rien_a_voir : juste pour le fun. c'est un peu comme un système de catégorie + sous-catégories, le tout dans la même table. Ce que j'essaie de faire en 1 requête : sortie les 10 derniers id_index en associant les XX id_index_parent éventuellement associés. J'ai essayé avec des jointures, des requêtes imbriquées, mais rien n'y fait, le LIMIT 10 me bloque et me sort toujours 10 résultats même si il y a (par exemple) 20 id_index_parent associés. Si quelqu'un peut au moins m'aiguiller un peu, ça serait cool ;) Merci. |
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : août 2002 Messages : 1 036 ![]() |
|
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Je ne comprends pas exactement ce que tu souhaites en sortie de requête...
Un petit exemple ?
__________________
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é régulier
![]() Inscription : août 2008 Messages : 34 ![]() |
@jeca : Merci pour le lien, je l'avais déjà parcouru, mais je n'y trouve pas de solution (toujours ce problème de limit) :/
@ced : mea culpa, j'aurais dû préciser. En fait je voudrais mettre une limite sur les parents mais pas sur les enfants. en gros avec un limit 3 DESC sur : id_index , id_index_parent , rien_a_voir 1 , 0 , blabla1 2 , 1 , blabla2 3 , 1 , blabla3 4 , 0 , blabla4 5 , 1 , blabla5 6 , 4 , blabla6 7 , 0 , blabla7 en sortie le limit 3 s'applique sur l'id_index ayant un id_index_parent = 0 et dans la même requête, sortir sans limite les champs ayant les id_index_parent associés id_index sortant : 7 , 0 , blabla7 // assujetti au limit 3 4 , 0 , blabla4 // assujetti au limit 3 6 , 4 , blabla6 // id_index_parent = id_index = 4 // non assujetti au limit 3 1 , 0 , blabla1 // assujetti au limit 3 5 , 1 , blabla5 // id_index_parent = id_index = 1 // non assujetti au limit 3 3 , 1 , blabla3 // id_index_parent = id_index = 1 // non assujetti au limit 3 2 , 1 , blabla2 // id_index_parent = id_index = 1 // non assujetti au limit 3 les "enfants" peuvent sortir dans le "fil" des parents ou sortir avant ou après les parents : 7 , 0 , blabla7 // assujetti au limit 3 4 , 0 , blabla4 // assujetti au limit 3 1 , 0 , blabla1 // assujetti au limit 3 6 , 4 , blabla6 // id_index_parent = id_index = 4 // non assujetti au limit 3 5 , 1 , blabla5 // id_index_parent = id_index = 1 // non assujetti au limit 3 3 , 1 , blabla3 // id_index_parent = id_index = 1 // non assujetti au limit 3 2 , 1 , blabla2 // id_index_parent = id_index = 1 // non assujetti au limit 3 Pour l'instant, j’extrais tout les champs de la table et applique la limite en php (boucle dans boucle), ça fonctionne, mais cette table est appelée à avoir des milliers d'enregistrements et ça va devenir très lourd ... En tout cas merci pour vos réponses. |
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 853 ![]() |
c'est simple en fait, tu peux le faire avec ça :
Code sql :
tu appelles avec un call ta procédure... et du coup tout le traitement se passe côté serveur mysql pas d'aller-retour inutiles tes_conditions représente ce que tu cherches, à toi de remplacer avec ce qui va bien... tes_champs représente la liste des champs que tu veux afficher, à toi de remplacer par ce qu'il faut... tu peux aussi faire la même chose en une seule requête mais ça serait, je pense, moins performant, car tu devrais refaire 2 fois la recherche des id des 10 éventuels résultats principaux. Là, tu ne la fais qu'une fois...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant soyons ![]() pensez à mettre et
|
||
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : août 2008 Messages : 34 ![]() |
Pas bête
Je teste ça ce soir et je cloture si c'est ok En tout cas, merci pour le coup de main
|
|
00
|
Copyright © 2000-2012 - www.developpez.com