1

みんな。私を助けてください。今、私はページネーションに取り組んでいます.. tblcategory.cat_id に応じて、ページごとに 5 つのレコードを表示したいと考えています。しかし、私のクエリ文字列には問題があります..

  1. テーブル tblcategory

    CREATE TABLE IF NOT EXISTS tblcategory( cat_idint(11) NOT NULL AUTO_INCREMENT, cat_namechar(50) NOT NULL, PRIMARY KEY ( cat_id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

  2. テーブル tblcontent

    CREATE TABLE IF NOT EXISTS tblcontent( con_idint(11) NOT NULL AUTO_INCREMENT, titlechar(100) NOT NULL, descriptiontext NOT NULL, date_posteddate NOT NULL, authorchar(50) NOT NULL, cat_idint(11) NOT NULL, PRIMARY KEY ( con_id), KEY cat_id( cat_id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=78 ;

  3. テーブル tblimage

    CREATE TABLE IF NOT EXISTS tblimage( img_idint(11) NOT NULL AUTO_INCREMENT, con_idint(11) NOT NULL, img_namevarchar(250) NOT NULL, img_thumvarchar(250) NOT NULL, PRIMARY KEY ( img_id), KEY con_id( con_id) ) ENGINE=InnoDB DEFAULT CHARSET= latin1 AUTO_INCREMENT=9 ;

これは私のクエリ文字列なので、SQLステートメントの何が問題なのですか。

SELECT * FROM tblcontent LEFT JOIN tblcategory
    ON (tblcontent.cat_id = tblcategory.cat_id)
    LEFT JOIN tblimage ON (tblimage.con_id = tblcontent.con_id)
    ORDER BY tblcontent.date_posted DESC
    LIMIT 0,5 WHERE tblcategory.cat_id=1

結果は次のとおりです: エラー コード: 1064 SQL 構文にエラーがあります。5 行目の 'WHERE tblcategory.cat_id=1' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

4

2 に答える 2

1

これを試して

SELECT * FROM tblcontent LEFT JOIN tblcategory
    ON (tblcontent.cat_id = tblcategory.cat_id)
    LEFT JOIN tblimage ON (tblimage.con_id = tblcontent.con_id)
  WHERE tblcategory.cat_id=1
    ORDER BY tblcontent.date_posted DESC
    LIMIT 0,5

最初に where 条件を指定してから順序を指定する必要があります

シンタックスはこちら

于 2013-03-19T04:07:23.323 に答える
0

WHERE位置が間違っています - の前にある必要がありますORDER BY

いえ

SELECT * FROM tblcontent
LEFT JOIN tblcategory ON (tblcontent.cat_id = tblcategory.cat_id)
LEFT JOIN tblimage ON (tblimage.con_id = tblcontent.con_id)
WHERE tblcategory.cat_id=1
ORDER BY tblcontent.date_posted DESC
LIMIT 0,5
于 2013-03-19T04:05:30.693 に答える