requet compliqué pour moi

Répondre
bounnthy
le 01/11/2013 à 18:46
bounnthy
Bonsoir les amis, je viens vers vous car j'ai du mal a trouver ma requête pour ce que je veux faire.
Donc mon objectif est ceci:

Un membre poste un photo avec tout le blabla ( ca c'est bon)
et je veux récupéré sur une page "galery.php":
1 membre et une photo aléatoire.

pour le moment je n'arrive pas a lister mes membres et je suis totalement perdue dans mon code donc je recommence tout de zéros.

Merci d'avance pour votre aide.
bounnthy
le 01/11/2013 à 19:29
bounnthy
bon j'ai trouver une solution
voici la requête

$sql = "SELECT *\n"
. "FROM `gallery_membre`\n"
. "GROUP BY `id_membre`\n"
. "HAVING COUNT( `id_membre` ) >1";

si jamais vous avez une autre solution je veux bien que l'on me l'explique.
ChoiZ
le 02/11/2013 à 12:27
ChoiZ
Hello,

Tu peux faire une requête comme ceci :

SELECT `photo` FROM `gallerie` ORDER BY RAND();

avec une table :
____________
| id | photo |
| 1 | 1.jpg |
| 2 | 2.jpg |

Le ORDER BY RAND va faire un random sur les enregistrements (ici 1 et 2).
Le jour ou tu auras plus de photos ça le fera sur un plus grand nombre.
bounnthy
le 02/11/2013 à 15:27
bounnthy
alors dans ma table il y aid, pseudo, lien, commentaire, titre et id_membre.

Ce que je veux c'est selection lien par rapport a l'id_membre mais qu'une seule fois.

pour le moment je ne sais qu'afficher le premier lien poste pour chaque membre.
LupusMic
le 02/11/2013 à 16:25
LupusMic
order by rand() est à proscrire, c'est un coup à mettre MySQL sur les genoux.
Il faut faire le traitement côté PHP.

Donc tu sélectionne tout, ordonné par id_membre :
select * from gallerie order by id_membre


Et en PHP tu fais le rand avec shuffle qui va te secouer tout ça :

<?php

$picture_by_member = array();

// $rows est issu de fetchAll
foreach($rows as $row) {

$id_membre = $row['id_membre'];

if(!isset($pics[$id_membre]))
$picture_by_member[$id_membre] = array()

$picture_by_member[$id_membre][] = $row;
}

$rows = array();
foreach($picture_by_member as $id_membre => $pics)
{
shuffle($pics);
$rows[] = $pics[0];
}
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
bounnthy
le 03/11/2013 à 22:50
bounnthy
Bonsoir et désolé de ne pas avoir répondue avant:

Bon pour mes requête précédente j'ai contourner temporairement le probleme.
avec ceci:

SELECT *
FROM gallery_membre
WHERE pseudo = 'bounn'
GROUP BY categorie
HAVING COUNT( `categorie` )


Cela m'affiche la premiere image que le membre a poster dans la catégorie.
maintenant je voudrais avoir un "COUNT" du nombre de lien dans chaque catégorie.
mais je ne sais pas ajouter cette requête a l'autre.

SELECT COUNT( lien )
FROM gallery_membre
WHERE pseudo = 'bounn'
AND categorie = 'poisson'


merci d'avance pour votre aide.
bounnthy
le 03/11/2013 à 23:00
bounnthy
C'est bon pour moi;
Voici la requête

SELECT * , COUNT( lien )
FROM gallery_membre
WHERE pseudo = 'taraderus'
GROUP BY categorie
HAVING COUNT( `categorie` )
LupusMic
le 04/11/2013 à 11:23
LupusMic
Je ne comprends pas pourquoi tu fais un HAVING COUNT( `categorie` ), ça revient à dire « et qui a au moins une catégorie », ce qui est toujours le cas puisque chaque tuple de la table a une valeur de categorie.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
bounnthy
le 06/11/2013 à 11:17
bounnthy
Salut, je le fait pour simplement compter le nb de lien (image) de chaque catégorie.
LupusMic
le 06/11/2013 à 11:47
LupusMic
Tu devrais enlever cette clause having, puisqu'elle n'apporte rien (à par une limitation des performances) et que tu semble ne pas comprendre ce qu'elle fait :-/
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre
LoadingChargement en cours