Jointure et limitations des rélustats (LIMIT)
Posté : 03 oct. 2008, 09:56
Bonjour à tous,
Je viens vers vous afin de débrouiller un petit problème que j'ai actuellement....
Je vais essayer de traiter le cas de manière abstraite, et si besoin on précisera avec mon cas à moi
Alors prenons les tables suivantes:
Donc voilà nos deux tables, qui seront liées par une structure 1:n (plusieurs enregistrements de tableB peuvent avoir le même id_tableA)
Voilà ce que j'aimerais faire, limiter ma requête aux dix premiers enregistrements de tableA, sachant qu'une jointure avec un LIMIT 0,10, me donnera au mieux 10 enregistrements, mais peut-être un seul...
Voilà si y a des façon de faire ça, je suis preneur
La seule manière à laquelle j'avais penser, c'était de faire une sous-requête jointe, dans laquelle je mettais une clause DISTINCT sur l'id_tableA, et le limit dans cette dernière...
EDIT: pour ma dernière idée... ça ne fonctionne pas...:
EDIT2:
J'ai beau cherché partout, je vois rien qui m'aille (comme lamoutarde...)
La seule solution qui serait à envisager, se serait de faire une table ou je stockerais l'ordre de mes identifiants évènement, et je rajouterais une jointure sur cette table avec une clause WHERE et un BETWEEN
(je m'explique mal, alros regardez là: http://www.nexen.net/index2.php?option= ... 1&id=17611)
Bref c'est une solution envisageable, mais assez difficile à mettre en place, il faut faire une reactualisation régulière de la table (donc un cron, vu la longueur du traitement...)
D'autres idées?
Je viens vers vous afin de débrouiller un petit problème que j'ai actuellement....
Je vais essayer de traiter le cas de manière abstraite, et si besoin on précisera avec mon cas à moi
Alors prenons les tables suivantes:
Code : Tout sélectionner
tableA
-------------
id_tableA auto_increment
tableB
-------------
id_tableB auto_increment
id_tableA
Voilà ce que j'aimerais faire, limiter ma requête aux dix premiers enregistrements de tableA, sachant qu'une jointure avec un LIMIT 0,10, me donnera au mieux 10 enregistrements, mais peut-être un seul...
Voilà si y a des façon de faire ça, je suis preneur
La seule manière à laquelle j'avais penser, c'était de faire une sous-requête jointe, dans laquelle je mettais une clause DISTINCT sur l'id_tableA, et le limit dans cette dernière...
EDIT: pour ma dernière idée... ça ne fonctionne pas...:
Voilà comme ça c'est réglé, j'ai plus d'idée....#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
EDIT2:
J'ai beau cherché partout, je vois rien qui m'aille (comme lamoutarde...)
La seule solution qui serait à envisager, se serait de faire une table ou je stockerais l'ordre de mes identifiants évènement, et je rajouterais une jointure sur cette table avec une clause WHERE et un BETWEEN
(je m'explique mal, alros regardez là: http://www.nexen.net/index2.php?option= ... 1&id=17611)
Bref c'est une solution envisageable, mais assez difficile à mettre en place, il faut faire une reactualisation régulière de la table (donc un cron, vu la longueur du traitement...)
D'autres idées?