Cherche a optimiser une requette MySQL SVP

WEBCodeur
WRInaute discret
WRInaute discret
 
Messages: 116
Inscription: 13 Mai 2007

Cherche a optimiser une requette MySQL SVP

Message le Sam Juil 09, 2011 10:59

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 !


Djibou_Te@M
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 426
Inscription: 20 Avr 2010

Re: Cherche a optimiser une requette MySQL SVP

Message le Sam Juil 09, 2011 11:17

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

WEBCodeur
WRInaute discret
WRInaute discret
 
Messages: 116
Inscription: 13 Mai 2007

Re: Cherche a optimiser une requette MySQL SVP

Message le Sam Juil 09, 2011 11:31

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.


blman
WRInaute accro
WRInaute accro
 
Messages: 3077
Inscription: 5 Sep 2003

Re: Cherche a optimiser une requette MySQL SVP

Message le Sam Juil 09, 2011 16:21

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 ;)

WEBCodeur
WRInaute discret
WRInaute discret
 
Messages: 116
Inscription: 13 Mai 2007

[résolu] Cherche a optimiser une requette MySQL SVP

Message le Sam Juil 09, 2011 18:08

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: Tout sélectionner
$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!!!

WEBCodeur
WRInaute discret
WRInaute discret
 
Messages: 116
Inscription: 13 Mai 2007

Re: Cherche a optimiser une requette MySQL SVP

Message le Sam Juil 09, 2011 18:11

J'ai pas trouvé comment mettre "resolu", désolé pour tous ^^

poulpe
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: 29 Juin 2004

Re: Cherche a optimiser une requette MySQL SVP

Message le Lun Juil 11, 2011 14:19

salut.
Pour le coup je pense qu'une seule table 'user' avec un champ genre (feminin/masculin) te simplifierai la vie...


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités