J'utilise trois tables MySql:requête de jointure ne fonctionne pas
commentaire
commentid loginid submissionid comment datecommented
connexion
loginid username password email actcode disabled activated created points
soumission
submissionid loginid title url displayurl datesubmitted
Dans ces trois tableaux, la « loginid "correspondre.
Je voudrais tirer le top 10 des identifiants basés sur le nombre de "soumission". Je voudrais les afficher dans un tableau HTML à trois colonnes qui montre le "nom d'utilisateur" dans la première colonne, le nombre de "submissionid" dans la deuxième colonne, et le nombre de "commentid" dans la troisième colonne.
J'ai essayé d'utiliser la requête ci-dessous mais cela n'a pas fonctionné. Une idée pourquoi pas?
Merci à l'avance,
John
$sqlStr = "SELECT
l.username
,l.loginid
,c.commentid
,count(s.commentid) countComments
,c.comment
,c.datecommented
,s.submissionid
,count(s.submissionid) countSubmissions
,s.title
,s.url
,s.displayurl
,s.datesubmitted
FROM comment AS c
INNER JOIN login AS l ON c.loginid = l.loginid
INNER JOIN submission AS s ON c.loginid = s.loginid
GROUP BY c.loginid
ORDER BY countSubmissions DESC
LIMIT 10";
$result = mysql_query($sqlStr);
$arr = array();
echo "<table class=\"samplesrec1\">";
while ($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td class="sitename1"><a href="http://www...com/.../members/index.php?profile='.$row["username"].'">'.stripslashes($row["username"]).'</a></td>';
echo '</tr>';
echo '<td class="sitename1">'.stripslashes($row["countSubmissions"]).'</td>';
echo '</tr>';
echo '</tr>';
echo '<td class="sitename1">'.stripslashes($row["countComments"]).'</td>';
echo '</tr>';
}
echo "</table>";
Merci ... cela semble afficher uniquement loginids qui ont au moins un submissionId. Comment est-ce que je pourrais avoir des loginid d'affichage qui n'ont pas de soumission? – John
À droite, remplacez JOIN par LEFT JOIN. – nuqqsa
S'il vous plaît voir la requête mise à jour, il comprend également la conversion des valeurs NULL à 0. – nuqqsa