CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[SQL] Tri complexe

mbret
mbret
Niveau 13
08 juin 2012 à 19:22:43

Bonsoir à tous, voila je me heurte à un problème nouveau pour moi.

Pour faire simple j'ai une table image :
[id][chemin][idParent]

un exemple de données :
[id][chemin][idParent]
_0____path_____null
_1____path_____null
_2____path_____null
_3____path_____2

Pour faire simple on a plusieurs images dans la bdd mais ces images peuvent avoir une image parente. Le but est en fait de gérer des création sous photoshop par exemple et de pouvoir stocker l'image de départ et toutes les images modifiés qui vnt suivre m'voyez ? :hap:
Ainsi d'une image final on peu retrouver l'image précédente.

Bon le problème maintenant c'est que l'on upload pas forcement l'image parente avant l'image enfant, y'a aucun moyen de vérifier cela après tout l'utilisateur upload les images dans l'ordre qu'il veux. Tant que [idParent]est cohérent on peut toujours retrouver le bon fil.
exemple :
[id][chemin][idParent]
_0____path_____null
_1____path_____null
_2____path_____3
_3____path_____null

Bref j'ai une page ou j'affiche toutes les images de la bdd et j'aimerais pouvoir faire un tri dessus pour que les images parentes soient toujours devant les images enfants.

Je sais pas du tout comment faire ça .. J'ai besoin de vous les amis :oui:

Bonne soirée :ok:

godrik
godrik
Niveau 30
08 juin 2012 à 20:21:24

utilise google avec les mot cle: graph oriente sans cycle (DAG), tri topologique, parcours.

_skip
_skip
Niveau 10
09 juin 2012 à 10:59:36

Je sais pas bien ce que tu veux faire... Mais si tu veux les enregistrements dont idParent est null en premier tu peux essayer ça :

ORDER BY ISNULL(idParent) DESC

mbret
mbret
Niveau 13
09 juin 2012 à 12:37:00

godrik je vais regarder ça aujourd'hui

_skip en fait je veux juste que dans le résultat final on ai ça :

Par rapport à l'exemple 1
0, 1, 2, 3
Par rapport à l'exemple 2
0, 1, 3, 2

Je représente seulement l'ordre des id d'images. Tu vois les images parentes devant leurs enfants afin de garder un ordre cohérent même si les images sont dans le désordre dans la bdd.

_skip
_skip
Niveau 10
10 juin 2012 à 18:38:16

Alors si tu veux reconstituer l'ordre en fonction du chemin et qu'il y a un nombre indéfini de niveau, je ne vois rien de simple pour faire ce que tu veux.
Ce sera soit une procédure stockée en SQL, soit un select all et reconstituer l'arbre côté client.

Si tu veux simplement sélectionner tes enregistrements en ayant les idparent NULL tout devant, ce que j'ai donné dans mon post plus haut devrait marcher.

mbret
mbret
Niveau 13
10 juin 2012 à 23:38:03

_skip pas l'ordre en fonction du chemin l'ordre en fonction des parents.

J'utilise un paginator du coup j'ai pas accés à tous les éléments. C'est pour ça ue j'aimerais le faire coté sql. (coté php ça serais facile pour moi mais bon ..)

Les id NULL n'ont donc pas d'importance.

_skip
_skip
Niveau 10
11 juin 2012 à 08:29:13

Tu ne peux pas trier un résultat en fonction de ce qu'il y avait sur la ligne précédente en SQL. Si c'est ta question.

mbret
mbret
Niveau 13
12 juin 2012 à 09:31:46

Tu ne peux pas trier un résultat en fonction de ce qu'il y avait sur la ligne précédente en SQL

--> un order by fais ça pourtant non ? :hap:

godrik
godrik
Niveau 30
12 juin 2012 à 17:08:45

Non mbret, un order by ne fait pas ca. I'll trie les tuples suivant un champs ou groupe de champs. Ici on veut un tri bien plus complique.

mbret
mbret
Niveau 13
12 juin 2012 à 21:05:10

Oui oui on est d'accord. Tu ne pense qu'il n'ya pas moyen de faire ce que je veux alors ? (sauf en php..)

godrik
godrik
Niveau 30
12 juin 2012 à 21:07:14

avec une requete SQL directement ca ne va pas etre possible. Cependant tu peux toujours faire le calcul dans le serveur SQL a l'aide d'une procedure stocke. Le plus simple pour toi me semble etre de faire le calcul au niveau applicatif (php).

mbret
mbret
Niveau 13
12 juin 2012 à 21:54:35

Pas simple dans la façon dont je procède avec mon paginator :-(

Je vais étudier ça :-)))

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment