Hallo.
Ich habe hier eine DB-Abfrage, den ich nicht so richtig verstehe. MYSQL ist nicht so mein Gebiet. Ich hoffe, jemand kann ihn mir erklären.
Der Query funktioniert und liefert mir die Anzahl ungelesener Beiträge im Forum.
Ich möchte nicht einfach was aus dem Internet "kopieren" dessen Funktion ich nicht verstanden habe.
1.) Welche Tabellen werden angesprochen? (post, thread, forum, threadread und forumred?)
2.) Könnte man die Abfrage so umbauen, dass sie verständlicher ist? (Mehr Querie) Wie?
3.) Was bedeutet das "IN"?
4.) Was bedeutet die "0" vor $Foren_ID? (in $Foren_ID sind alle Foren ID´s mit Komma getrennt gespeichert)
Ich habe hier eine DB-Abfrage, den ich nicht so richtig verstehe. MYSQL ist nicht so mein Gebiet. Ich hoffe, jemand kann ihn mir erklären.
Der Query funktioniert und liefert mir die Anzahl ungelesener Beiträge im Forum.
PHP:
$Foren_ID = array_keys($vbulletin->forumcache);
$Foren_ID = implode(',',$Foren_ID);
$Limit = TIMENOW - ($vbulletin->options['markinglimit'] * 86400);
$Visible = '0,1,2';
$UserID = $vbulletin->userinfo['userid'];
$postcount = $vbulletin->db->query_first_slave("
SELECT COUNT(post.postid) as unread FROM post AS post
INNER JOIN thread AS thread USING (threadid)
INNER JOIN forum AS forum USING (forumid)
LEFT JOIN threadread AS threadread ON (threadread.threadid = thread.threadid AND threadread.userid = $UserID)
LEFT JOIN forumread AS forumread ON (forumread.forumid = forum.forumid AND forumread.userid = $UserID)
WHERE thread.forumid IN(0$Foren_ID) AND thread.visible IN ($Visible)
AND post.dateline > IF(threadread.readtime IS NULL, $Limit, threadread.readtime)
AND post.dateline > IF(forumread.readtime IS NULL, $Limit, forumread.readtime)
AND post.dateline > $Limit
AND thread.lastpost > IF(threadread.readtime IS NULL, $Limit, threadread.readtime)
AND thread.lastpost > IF(forumread.readtime IS NULL, $Limit, forumread.readtime)
AND thread.lastpost > $Limit
");
Ich möchte nicht einfach was aus dem Internet "kopieren" dessen Funktion ich nicht verstanden habe.
1.) Welche Tabellen werden angesprochen? (post, thread, forum, threadread und forumred?)
2.) Könnte man die Abfrage so umbauen, dass sie verständlicher ist? (Mehr Querie) Wie?
3.) Was bedeutet das "IN"?
4.) Was bedeutet die "0" vor $Foren_ID? (in $Foren_ID sind alle Foren ID´s mit Komma getrennt gespeichert)