2014-12-03 82 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