IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Demande étrange: résultats dans le désordre


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 49
    Points : 45
    Points
    45
    Par défaut Demande étrange: résultats dans le désordre
    Bonjour,

    Désolé de n'être qu'un modeste amateur avec une question bizarre !

    J'ai une requête qui me produit les résultats attendus.
    L'ordre de présentation des données est toujours le même (je ne sais pas si c'est dû à SQL ou à l'ORM que j'utilise).

    Néanmoins, j'aimerais que les données (lignes) puissent apparaître dans un ordre au hasard à chaque fois que la requête est exécutée.
    Est-ce possible en sql ?

    Une méthode du type DISORDER me conviendrait très bien !!!
    J'ai bien pensé à faire un ORDER sur un des champs mais ce n'est pas top.

    Merci d'avance
    Dominique

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Quel est votre SGBD ?
    Il n'y a pas de DISORDER, mais vous pouvez générer une colonne de façon aléatoire et trier dessus.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 49
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Quel est votre SGBD ?
    Il n'y a pas de DISORDER, mais vous pouvez générer une colonne de façon aléatoire et trier dessus.
    J'utilise SQLite avec SQLAlchemy (en Python).
    Colonne aléatoire: comment me conseilleriez-vous de procéder ?

    Merci
    Dominique

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    Je conais pas SQL lite qui est très limité, mais par exemple dans SQL Server tu peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ...
    ...
    ORDER BY NEWID()
    La fonction NEWID() renvoi un GUID qui par nature est aléatoire...
    Regarde s'il existe un équivalent dans SQL lite (ce que je doute...)

    A +

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Si vous faites une recherche sur random et SQLlite, vous trouverez un sujet sur cette même problématique !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 49
    Points : 45
    Points
    45
    Par défaut
    Merci beaucoup pour votre aide, Waldar et Frédéric (j'ai ton bouquin 2e edition, excellent comme tes tutoriels; il faut que je le repotasse !!).

    Pour ce qui concerne sqlite, en effet, pas de NEWID().
    Mais random existe apparemment.
    Donc, je vais sans doute ajouter une colonne avec un numéro aléatoire via random) et trier dessus.

    Merci encore
    Dominique


    ps: je reviendrai...

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    Cela ne marchera pas car RANDOM est évalué globalement et non à chaque ligne...

    A +

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 49
    Points : 45
    Points
    45
    Par défaut
    Pourtant Frédéric, a priori, ça a l'air de marcher.

    Sous SqlAlchemy, je rajoute à ma requête:
    .order_by(func.random())
    et même:
    .order_by(asc(Mytable.colB), func.random())

    D'après mes tests sur un jeu d'essai, ça me renvoie un tri différent à chaque fois.

    Sauf à avoir une autre solution, je vais utiliser celle-ci.

    A+
    Dominique

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    Alors vous avez la chance d'avoir un mauvais optimiseur !!!! ;-)

    A +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exporter résultats dans fichier excel [forms 6i]
    Par OUALASS dans le forum Forms
    Réponses: 4
    Dernier message: 30/05/2006, 19h38
  2. Résultat dans un ÉTAT
    Par virtuose dans le forum IHM
    Réponses: 1
    Dernier message: 05/05/2006, 21h28
  3. Réponses: 5
    Dernier message: 16/02/2006, 16h06
  4. Résultats dans une même colonne.
    Par souellet dans le forum Langage SQL
    Réponses: 6
    Dernier message: 10/03/2004, 19h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo