Jointure et limit

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Jointure et limit

Re: Jointure et limit

par devlop78 » 19 sept. 2010, 19:14

SELECT * FROM (SELECT * FROM table1 ORDER BY `table1`.`date` DESC LIMIT 20) AS table1 LEFT JOIN `table2` ON `table2`.`idDevis` = `table1`.`id` ORDER BY `table1`.`date` DESC, `table2`.`dateM` DESC

Ca a l'air de très bien fonctionner et j'ai compris la logique. Donc je retire ma question, si ce n'est d'un point de vue optimisation

Jointure et limit

par devlop78 » 19 sept. 2010, 18:43

Bonjour,

J'ai vu que le sujet a été abordé plusieurs fois mais il me faut le temps de tout décortiquer sans, au final, être sûr du résultat. Alors, je vous demande votre avis.

SELECT * FROM `table1` LEFT JOIN `table2` ON `table2`.`idDevis` = `table1`.`id` ORDER BY `table1`.`date` DESC, `table2`.`dateM` DESC LIMIT $position, 20

voilà le principe : retourner la liste des devis avec leurs messages (sorte d'historique), le tout trié part ordre décroissant de date de devis et de date de messages (très important). $position, quant à lui, c'est une mise en place rapide du déplacement entre les pages.

Hier, je ne me suis pas posé la question en mettant ça. Mais là j'ai eu un éclair (j'étais dehors), je me suis dit : "Mais au fait, ne risque-t-il pas de s'arrêter à 20 résultats au total plutôt qu'à 20 devis ?".

Donc voilà ... je souhaiterais avoir 20 (ou autre défini par moi-même) résultats de devis (table1) quelque soit le nombre de résultat de messages (donc de résultats au final).

Je dois pouvoir naviguer dans ces résultats : il ne s'agit pas de m'afficher les 20 premiers, mais bel et bien de m'afficher les 20 premiers, pui quand je clique sur "suivant" de m'afficher de 20 à 49, etc ...

Une idée ? Je suis sûr que oui :) Merci d'avance

PS : Seulement en SQL pas de PHP, il faut partir du principe que la requête sans LIMIT peut retourner 1 milliard de résultats.