Kolik těch NULL tam má být?
SELECT t.id as topic_id, t.uid as poster_id, t.subject, t.desc_x, t.article as message, t.posted as posted, p.topic_id, p.poster_id, t.poster as username, u.email, u.url, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.avatar, u.avatar_width, u.avatar_height, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.message, p.posted as posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM topics AS t INNER JOIN (SELECT p.topic_id, p.poster_id, t.poster as username, u.email, u.url, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.avatar, u.avatar_width, u.avatar_height, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.message, p.posted as posted, p.edited, p.edited_by FROM post AS p UNION VALUES ROW (NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)) posts) ON (t.id=p.topic_id) INNER JOIN users AS u ON (u.id=p.poster_id ) OR (p.poster_id IS NULL AND u.id=5) INNER JOIN groups AS g ON g.g_id=u.group_id LEFT JOIN online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE t.id=41 ORDER BY p.id
Přehledněji:
$query = array(
u.email_setting, u.num_posts, u.registered, u.admin_note, u.avatar, u.avatar_width, u.avatar_height, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.message, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online
'SELECT' => 't.id as topic_id, t.uid as poster_id, t.subject, t.desc_x, t.article as message, t.posted as posted, p.topic_id, p.poster_id, t.poster as username, u.email, u.url, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.avatar, u.avatar_width, u.avatar_height, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.message, p.posted as posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online',
'FROM' => 'topics AS t',
'JOINS' => array(
array(
'INNER JOIN' => '(SELECT p.topic_id, p.poster_id, t.poster as username, u.email, u.url, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.avatar, u.avatar_width, u.avatar_height, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.message, p.posted as posted, p.edited, p.edited_by FROM post AS p UNION VALUES ROW (NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)) posts)',
'ON' => '(t.id=p.topic_id)'
),
array(
'INNER JOIN' => 'users AS u',
'ON' => '(u.id=p.poster_id ) OR (p.poster_id IS NULL AND u.id='.$authors_id.')'
),
array(
'INNER JOIN' => 'groups AS g',
'ON' => 'g.g_id=u.group_id'
),
array(
'LEFT JOIN' => 'online AS o',
'ON' => '(o.user_id=u.id AND o.user_id!=1 AND o.idle=0)'
)
),
'WHERE' => 't.id='.$id,
'ORDER BY' => 'p.id'
);
Chyba:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES ROW (NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NUL' at line 1