|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre régulier
![]() Inscription : avril 2003 Messages : 322 ![]() |
Bonjour,
Question récurrente visiblement... Est-il possible de faire un LIMIT sur un "faux GROUP BY" ? Exemple d'un résultat de requête sur une jointure. Code :
Code :
Code :
Une solution, une idée ? Merci Dorian |
||||||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
La solution est simplissime avec les fonctions de fenêtrage :
Code :
Sauf Que MySQL, cet Ersatz de SGBDR ne les implémente toujours pas !!! Bref, passez à PostGreSQL... Vous aurez moins d'emmerde et en plus c'est gratuit, alors que MySQL est payant ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
||
|
00
|
|
|
#3 | ||
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
On aurait peut être pu écrire ceci aussi (certainement beaucoup moins bien):
Code :
__________________
![]() ![]() ![]() David55 |
||
|
|
00
|
|
|
#4 | |
![]() ![]() |
Citation:
__________________
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
|
|
|
#5 |
|
Membre régulier
![]() Inscription : avril 2003 Messages : 322 ![]() |
Oui David55, je crains qu'il n'y ait pas d'autres solutions.
CinePhil, les deux premiers utilisateurs du jeu de résultats (pas par rapport aux id), et de toute manière on est obligé de conserver le WHERE sur TASK. Merci à vous |
|
|
00
|
|
|
#6 | |||
![]() ![]() |
Citation:
Citation:
Citation:
__________________
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
|
|
|
#7 |
|
Membre régulier
![]() Inscription : avril 2003 Messages : 322 ![]() |
C'est bien ça mon problème, j'aimerais pouvoir faire un
Pour répondre à la logique de l'ordre, peu importe, uniquement l'ordre du résultat de la requête. C'est pour faire de la pagination par USER. C'est pour l'exemple d'un moteur de recherche et poser la problématique pour ne pas qu'on me propose une sous requête avec un IN comme solution. |
|
|
00
|
|
|
#8 |
![]() ![]() |
La pagination, c'est de la présentation. C'est donc le boulot du logiciel, pas du SGBD !
Si ta requête retourne dans l'ordre {12, 24, 25, 28...}. Tu vas afficher les données de 12 et de 24. Puis avant que l'utilisateur ne demande la page suivante, de nouvelles données sont arrivées qui font que maintenant la requête donne dans l'ordre {3, 12, 15, 24, 25, 27...}. Tu vas afficher quoi ? 15 et 24 alors que l'utilisateur a déjà vu 24 ? 3 et 12 parce que maintenant ce sont les deux premiers et alors que 12 a déjà été vu par l'utilisateur ? Il faut que le logiciel récupère la totalité du résultat de la requête, affiche les résultats de la première page et mémorise en session le jeu de résultats et là ou il en est de la pagination. Quant au "moteur de recherche" tellement à la mode, il existe chez MySQL la recherche FULLTEXT qui peut éviter d'avoir un WHERE à rallonge.
__________________
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
|
|
|
#9 |
|
Membre régulier
![]() Inscription : avril 2003 Messages : 322 ![]() |
La session est intéressante mais pas sur plusieurs centaines de millier de résultats (c'est mon cas). Je ne peux pas tout retourner à chaque fois et réaliser le traitement côté code, c'est très lourd. Donc dans ton exemple, oui on ré-afficherait 15-24.
Le "moteur de recherche" est un formulaire qui propose plusieurs paramètres, donc pas de FULLTEXT envisageable trop de critères sur des dates, intervalles, sum, etc... ça reviendrait à ré-écrire un moteur de requêtes pour générer la bonne recherche (et en plus fulltext n'existe pas en innoDb, je serais obligé de faire une table à part). |
|
|
00
|
|
|
#10 |
![]() ![]() |
Tu ne veux toujours pas donner ta vraie requête et son objectif ?
On ne peut pas t'aider davantage sans plus de renseignements.
__________________
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
|
|
|
#11 | |
|
Membre régulier
![]() Inscription : avril 2003 Messages : 322 ![]() |
C'est pas que je ne veux pas, c'est qu'elle n'apporte rien au problème.
La requête est construite par le code il y a plus de 100 lignes et x jointures qui ne font que compliquer la résolution d'un problème aussi simple que : Citation:
> Livre 1 > Livre 2 > Livre 3 > Livre .. > Livre N THEME 2 > Livre 42 THEME 10 > Livre 4 Exactement pareil que USER et TASK. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com