8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Mes connaissances en MySQL n'étant pas très poussées et limitées à ce qu'on fait le plus souvent, je souhaiterais savoir s'il existe directement une requête SQL permettant de mélanger toutes les lignes d'une table.

C'est un peu le même principe qu'un jeu de carte neuf, on me fournit un paquet mais pour jouer, j'ai besoin que les cartes soient mélangées.

Si jamais cela n'est pas possible, je passerais par le PHP, mais c'est peut être moins gourmand directement en requête...

Merci d'avance.
Salut,

Pour mélanger les tuples d'une table tu peux éventuellement utiliser rand() mais il semblerait que ce soit plutôt bof niveau perf, peut être ça serait mieux de passer par PHP, je ne sais pas ^^.

Genre :
SELECT * FROM table ORDER BY rand()


edit : une petite source
Modifié par Gili (20 Mar 2012 - 16:11)
Au temps pour moi, j'ai oublié de dire que c'est la table elle-même que je veux mélanger, et non un résultat grâce à rand(). Qui est en plus, comme tu l'as dit, très très gourmande en ressource...

Explication du pourquoi je souhaite faire cela, j'ai un stock entier de voitures avec un affichage de 30 voitures par page. Le problème étant que les entrées dans la table sont ordonnées par concession (ce que nous voulons changer) et donc les 30 premières voitures qui apparaissent sont de la même concession... Rendre aléatoire ses 30 premières reste assez simple, le soucis va être au niveau de la pagination... en arrivant page 2, 3 etc. on va avoir une incohérence entre le nombre de page, les voitures déjà affichées et j'en passe...

Enfin voilà, le mieux aurait été de faire à la bourrin et faire une requete qui altère directement l'ordre des enregistrements de la table.
Bonjour le plus "simple" serait de faire un tableau PHP contenant toutes les données (ou juste les ID). De mélanger ce tableau et de le conserver dans la session pour n'afficher que la partie correspondant à la page.
Bon bha petit problème résolu, j'ai au final fait en sorte d'ajouter une colonne en plus dans ma table nommée "random_id" qui est généré avec un pseudoaléatoire php et j'ai plus qu'à faire un ORDER BY random_id.

Faire le tableau PHP et le passer en session était ma seconde solution mais ça impliquait de refaire la moitié du code car je n'utilisais plus la même origine pour les données (PHP au lieu de MySQL)...

Encore merci à vous.

Kévin.