Optimisation SQL pour MySQL - SELECT

Bonjour,

J’ai vraiment du mal à optimiser mes requêtes SQL, ne connaissant que très mal ce langage. Je vais proposer un cas que je retrouve souvent dans mes scripts, et que je n’arrive pas à gérer en une seule requete, surement pas manque de syntaxe.

Voila le problème :
J’ai 3 tables dans lesquels je veux selectionner des données.

Table 1
=> id(primaire), id2(index), datat1, date
Table 2
=> id(primaire), id2(index), int, datat2
Table 3
=> id(primaire), id2(index), datat3

Il me faudrait une requete qui selectionne datat1, datat2 et datat3 en ayant toute pour id2 une valeur prédéfinie avant la requete $id2.

  • Je dois relever les 5 premières lignes datat1 triées par date en décroissant.
  • Je dois relever 2 lignes datat2 quand int est différent de 0, triées au hasard.
  • Je dois relever 3 lignes de datat3, triées au hasard.

Je ne sais pas comment passer ma requete de telle sorte qu’après je puisse, en php, gérer un nombre différents de sorties (5 lignes de la table1, 2 de la table2 et 3 de la table3).
Sachant qu’après en sortie il me faut simplement :
$table1=datat1; // Soit 5 enregistrements
$table2=datat2; // Soit 2 enregistrements
$table3=datat3; // Soit 3 enregistrements

Actuellement je fais ça en 3 requetes basiques, ça marche certe, mais je suppose que c’est très laid :confused: !
Pour ce qui est du nombre différents d’enregistrements, c’est gérable dans une boucle php avec des conditions, a moins qu’il existe une méthode SQL adaptée qui retournerais NULL peut-être tout simplement.

Merci :slight_smile: !

J’ai pas trop compris mais si c’est trois tables qui ont rien à voir, je vois pas comment tu peux éviter de faire trois requêtes. :neutre:

Ok, Non c’est qu’on me conseil toujours de faire une énorme requête au début, en faisant le plus de boulot possible pour php. S’il n’y a pas d’autres manières je plussoies.

Je fais alors 3 requetes et 3 boucles.

Question subsiliaire, c’est très crade de mettre une requete dans une boucle d’une autre requete?

Subsidiaire :wink:

Je pense oui, mieux vaut faire ta requete avec tous tes résultats et les traiter dans ta boucle ensuite :wink:

C’est plutôt l’inverse. Fait faire le plus de boulot pour le serveur de BDD, surtout quand il est apte à le faire.

C’est ce qu’il a dit en fait… moi aussi j’avais mal compris au début.

Moi pas parler la France :o ! (Peut-être est-ce du à la fatigue parce que je me lève tôt :??: )

J’avoue, en regardant de plus près rien que pour la page d’accueil, j’execute une requete poiur relever toutes les news, et après pour chaque news je fais 3 requetes… Sachant que j’ai 10 news, ca fait 30 requetes alors que je pourrais très bien le faire avec 4 :confused: !