2014-12-03 84 views
1

我有这个工作的罚款:WHERE离开前子句JOIN不工作

$sql = $mysqli->query("SELECT posts.*, members.username, categories.category_name 
         FROM posts 
         LEFT JOIN members 
          ON posts.post.by = members.id 
         LEFT JOIN categories 
          ON posts.post_category = categories.category_id 
         ORDER BY posts.post_date DESC 
         LIMIT $start, $limit 
         "); 

但我想这个WHERE条件到它:

WHERE posts.post_by = 1 

我无法找出正确的方式做它,我已经试过把它放在最后,在LIMIT之前,在FROM帖子之后,但结果回来的时候是空的。

+0

有你确认你确实有一个帖子表中的ID为1的条目? – 2014-12-03 23:59:07

+0

为什么我需要这个?条件是获得条目的列post_by = 1 – 2014-12-04 00:01:58

+0

您的文章有语法错误...应该是'post_by',而不是'post.by',这就是我的意思,posts.post_by列有一个值1(members_id) – 2014-12-04 00:07:26

回答

2

where条款去后from

    SELECT posts.*, members.username, categories.category_name 
        FROM posts 
        LEFT JOIN members 
         ON posts.post.by = members.id 
        LEFT JOIN categories 
         ON posts.post_category = categories.category_id 
        WHERE posts.post_by = 1 
        ORDER BY posts.post_date DESC 
        LIMIT $start, $limit; 

join s为的from条款,这就是为什么我缩进查询作为的一部分:

    SELECT posts.*, members.username, categories.category_name 
        FROM posts LEFT JOIN 
         members 
         ON posts.post.by = members.id LEFT JOIN 
         categories 
         ON posts.post_category = categories.category_id 
        WHERE posts.post_by = 1 
        ORDER BY posts.post_date DESC 
        LIMIT $start, $limit; 
+3

你的意思是加入后。 – 2014-12-03 23:59:16

+1

@juergend。 。 。不,我的意思是在'从'之后。 'join's不是SQL中的一个子句,它们是'from'子句中的一个语句。 – 2014-12-04 00:00:20

+0

是的,加入后,我会在6分钟内将其标记为答案。 – 2014-12-04 00:03:36