Trier en fonction des occurences d'une autre table
Bonjour à tous :)
Cela fait plusieurs heures que je cherche une solution à mon problème, mais comme je suis une sous-daube concernant les jointures SQL... :?
Bref voici mon problème:
J'ai une table nommée « fichiers » qui, comme son nom l'indique, contient une liste de fichiers.
Ses colonnes sont: id, nom, date, taille, membre, adr, description, tags, permissions, vues, ip,checksum et mdp
J'ai une deuxième table, « telechargements », qui est composé des colonnes suivantes:
fichier, membre, date, ip
A chaque téléchargement du fichier qui a pour id x, une ligne est insérée dans la table « telechargement », avec fichier=x
J'aimerais pouvoir lister les fichiers répertoriés dans la bdd selon le nombre de téléchargements, donc selon le nombre de lignes dont la colonne « fichier », dans la table « telechargements », correspond à la colonne « id » dans la table « fichiers ».
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $requete = "SELECT * FROM fichiers";
$mots_cles = explode(" ", $recherche);
for ($i=0; $i < count($mots_cles); $i++) {
if ($i == 0)
$requete .= " WHERE tags LIKE '%".$mots_cles[$i]."%'";
else
$requete .= " AND tags LIKE '%".$mots_cles[$i]."%'";
}
$tous_resultats = $bdd->query($requete);
$pages = ceil($tous_resultats->rowcount() / $limite_par_page);
$debut_limite = $limite_par_page * ($page-1);
$fin_limite = $limite_par_page * $page;
$resultats = $bdd->query($requete." ORDER BY date DESC LIMIT $debut_limite, $fin_limite"); |
Je souhaiterais faire un truc du genre:
Code:
SELECT * FROM fichiers, telechargements WHERE fichiers.id = telechargements.fichier ORDER BY ROWCOUNT(telechargements) DESC
Sauf qu'il va me retourner uniquement les fichiers qui ont déjà été téléchargés, ce que je ne veux pas :?
J'espère que mes explications vous ont parues claires et désolé pour le pavé que je vous fait lire :lol:
Merci d'avance :)