Ich habe eine SQL-Abfrage, die Beiträge aus einer Datenbank holt. Alles funktioniert gut, aber jetzt muss ich die Ergebnisse nach der Anzahl der Kommentare sortieren, die jeder Beitrag hat. Die Kommentare sind in einer separaten Tabelle und sie haben eine Post-ID-Spalte, die es mit dem Post verbindet. Ich muss die Beiträge nach der Anzahl der Kommentartabelle basierend auf einer Shard-ID bestellen? Ich habe alles versucht, aber jedes Mal, wenn ich versuche, etwas zu meiner Frage hinzuzufügen, hört es auf zu laufen und lässt meine Seite leer. Ich brauche Hilfe, um zu wissen, wohin ich die andere JOIN-Anweisung setzen soll. Das ist meine Abfrage:Wie kann ich die Ergebnisse einer SQL-Abfrage anhand der Anzahl einer anderen Tabelle basierend auf einer Shard-ID anordnen?
$union = "UNION ALL
(
SELECT DISTINCT wallposts.p_id,wallposts.is_profile_notes,wallposts.times_viewed,wallposts.columnTimesShared,
wallposts.marked,wallposts.secure_id,wallposts.reshared,wallposts.group_id,
wallposts.totaluploads,wallposts.WallUploadID,wallposts.type,
wallposts.value,wallposts.media,wallposts.youtube,wallposts.post_type,
wallposts.privacy,wallposts.tagedpersons,wallposts.with_friends_tagged,wallposts.emotion_head,wallposts.selected_emotion,wallposts.title,
wallposts.url,wallposts.description,wallposts.cur_image,
wallposts.uip,wallposts.likes,wallposts.userid,
wallposts.posted_by,wallposts.post as postdata,wallusers.*,
UNIX_TIMESTAMP() - wallposts.date_created AS TimeSpent,
PosterTable.mem_pic as posterPic, PosterTable.gender as posterGender,PosterTable.oauth_uid as poster_oauth_uid, PosterTable.username as posterUsername,
PosterTable.mem_fname as posterFname,PosterTable.work as posterWork,
PosterTable.mem_lname as posterLname,walllikes_track.id as PostLikeFound,wallposts.date_created
FROM
wallusers,wallusers as PosterTable, wallposts
LEFT JOIN walllikes_track
ON wallposts.p_id = walllikes_track.post_id AND walllikes_track.member_id = ".$user_id."
WHERE
wallusers.active = 1
AND
PosterTable.active = 1
AND
wallposts.group_id IN (".$groups.")
AND
wallposts.group_id != 0
AND
PosterTable.mem_id = wallposts.posted_by
AND
wallposts.marked < ".$this->flagNumber."
AND
wallusers.mem_id = wallposts.posted_by) ";
Die Kommentartabelle heißt wallcomments und hat eine Spalte namens post_id. Ich weiß, dass ich JOIN und COUNT verwenden muss, aber ich weiß nicht, wo ich es in meinen aktuellen Code einfügen soll.
Fügen Sie einer Unterabfrage einen zusätzlichen Join hinzu, der die Anzahl der Kommentare pro Post ermittelt und diese verwendet. Ich kann keine genaue Antwort geben, weil so viele Details fehlen und Ihre Anfrage in Unordnung ist. –
Wo soll ich den JOIN einfügen? Das ist mein Dilemma. Immer wenn ich Änderungen an der Abfrage vornehme. Es hört auf, vollständig zu laufen. –
Ja, weil Ihre Anfrage weitläufig und schwer zu verstehen ist, wie es die Frage ist. Nächstes Mal stellen Sie eine bessere Frage, indem Sie ein minimales Beispiel Ihres Problems zeigen. Niemand kann die Abfrage, die Sie jetzt haben, reproduzieren, da nicht einmal Daten vorhanden sind. –