Cherche a optimiser une requette MySQL SVP

WRInaute discret
Bonjour a tous,

J'ai deux tables qui ne sont pas identiques mais qui ont des champs en commun. Plus précisément les champs qui m’intéressent sont photo1 qui représentent le nom des photos stockées dans un dossier.

Je souhaite selectionner les 6 dernieres entrées de chacune des tables de ce champs et les affichées aléatoirement.

Les jointures conviendraient t'elles?

Merci d'avance !
 
WRInaute occasionnel
Une jointure sert si il y a un point d'entrée commun entre les deux tables du style je cherche le champ photo 1 fait par "nom de l'auteur" sur mes deux tables. Ici "nom de l'auteur" est la référence commune entre tes deux tables donc jointure.

Pour ce que tu veux faire, tu fais deux requêtes :

"SELECT champ_photo1 FROM table_X ORDER BY id_table DESC (0,6)"

Ou table_X est le nom de ta table 1 ou table 2
id_table est l'id de la table (qui te donne aussi un ordre d'insertion)
"DESC" sert à les classer de manière décroissante (pour avoir les dernières en premier)
(0,6) pour dire que tu en veux que 6
 
WRInaute discret
Tout a fait, ca rejoint bien mes lectures.
Mais pour l'affichage des 12 en aleatoire ca se complique.

J'ai tenté un

$check_all = $bdd->query('SELECT photo1 FROM boys, girls ORDER BY RAND() LIMIT 0,12');

Ca me retourne un SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'photo1' in field list is ambiguous in

Hors si pour les test en local je remplace photo1 par *, je n'ai plus d'erreur ...

Merci a toi.
 
WRInaute accro
J'irais personnellement voir du côté de UNION ( http://dev.mysql.com/doc/refman/5.0/en/union.html )

Si tu n'a pas le choix de le faire en 1 seule requête, un truc du genre devrait sélectionner les photos des 12 dernières entrées (pas 6 et 6, mais les 12) :
(SELECT photo1, dateEntree FROM boys) UNION (SELECT photo1, dateEntree FROM girls) ORDER BY dateEntree DESC LIMIT 12;
Ensuite les classer aléatoirement quand tu traite ta requête.

Sinon, je rejoins Djibou_Te@M, je ne vois pas d'autres manières que de le faire en 2 requêtes SQL. Le problème est que tu aurais dû regrouper les infos communes aux 2 tables dans une 3ème table, ça t'aurait faciliter la vie ;)
 
WRInaute discret
[résolu] Cherche a optimiser une requette MySQL SVP

Yes, super :)
Merci pour ce tuyau, je connaissait pas encore UNION mais j'vais faire un malheur avec :D !!!

Voici ce que ca donne en PDO :
Code:
$check_all = $bdd->query('SELECT pseudo, photo1 FROM girls UNION SELECT pseudo, photo1 FROM boys ORDER BY RAND() LIMIT 0,12');
Un tit while et le tour est joué.

Le client m'a ajouter sans cesse des trucs a ajouter ce qui a mis un peu mon organisation de BDD a mal. J'organiserai ca mieux la prochaine fois.

Merci bcp en tout les cas!!!
 
WRInaute discret
salut.
Pour le coup je pense qu'une seule table 'user' avec un champ genre (feminin/masculin) te simplifierai la vie...
 
Discussions similaires
Haut