ich brauch mal die Hilfe eines SQL Sachkundigen, da ich hier an die Grenze meines SQL Grundverständnisses stosse.
Knackpunkt ist das vorab als Variable
$sql_arp
definierte Subselect. Es erzeugt zuviel Last.Ich habe schon vieles getestet und probiert. Alle möglichen JOIN's und so fort, find aber die Lösung nicht.
Alle von mir versuchten alternativen Abfragen bringen nicht das Ergebnis, wie es die vorliegende Abfrage bringt.
Code: Alles auswählen
// Knackpunkt
$sql_arp = "(SELECT MAX(post_time) FROM " . POSTS_TABLE . " WHERE u.user_id = poster_id)";
$sql_ary = array(
'SELECT' => "u.username AS u_name, u.user_email, $sql_arp AS posttime, u.user_type, u.user_id, u.user_posts, u.user_colour, u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height, u.user_lastvisit, u.test_0, u.test_1, u.test_2, p.post_subject, p.forum_id, p.post_id",
'FROM' => array(
USERS_TABLE => "u",
),
'LEFT_JOIN' => array(
array(
'FROM' => array(POSTS_TABLE => 'p'),
'ON' => "$sql_arp = p.post_time",
)
),
'WHERE' => "UNIX_TIMESTAMP( ) - $sql_arp > $days *24 *3600
AND u.user_posts != 0",
'ORDER_BY' => "$sql_arp DESC"
);
$sql = $db->sql_build_query('SELECT', $sql_ary);