0

私はこのコードに問題があります:

$comments->query = "SELECT " . PREFIX . "_comments.id, post_id, " . PREFIX . "_comments.user_id, " . PREFIX . "_comments.date, " . PREFIX . "_comments.autor as gast_name, " . PREFIX . "_comments.email as gast_email, text, ip, is_register, name, " . USERPREFIX . "_users.email, news_num, " . USERPREFIX . "_users.comm_num, user_group, lastdate, reg_date, signature, foto, fullname, land, yahoo, " . USERPREFIX . "_users.xfields, " . PREFIX . "_post.title, " . PREFIX . "_post.date as newsdate, " . PREFIX . "_post.alt_name, " . PREFIX . "_post.category FROM " . PREFIX . "_comments LEFT JOIN " . PREFIX . "_post ON " . PREFIX . "_comments.post_id=" . PREFIX . "_post.id LEFT JOIN " . USERPREFIX . "_users ON " . PREFIX . "_comments.user_id=" . USERPREFIX . "_users.user_id " . $where . " ORDER BY id desc";

エラー:

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 'ON dle_comments.post_id=dle_post.id LEFT JOIN dle_users ON dle_comments.user_id=' at line 1

編集:

SELECT 
  dle_comments.id, post_id, 
  dle_comments.user_id, 
  dle_comments.date, 
  dle_comments.autor as gast_name, 
  dle_comments.email as gast_email, 
  text, ip, is_register, 
  group_concat(mid) as `awards`, 
  name, dle_users.email, news_num, 
  dle_users.comm_num, user_group, 
  lastdate, reg_date, signature, 
  foto, fullname, land, icq, 
  dle_users.xfields, dle_post.title, 
  dle_post.date as newsdate, dle_post.alt_name, dle_post.category 
FROM 
  dle_comments 
  LEFT JOIN dle_awards 
    ON uid = dle_post 
    ON dle_comments.post_id=dle_post.id 
  LEFT JOIN dle_users 
    ON dle_comments.user_id=dle_users.user_id 
ORDER BY id desc 
LIMIT 0,30

私のSQLバージョン:5.5.20

どうすればこの問題を解決できますか?

4

3 に答える 3

1

クエリのエラーが予想されました。エラーが指しているクエリに冗長なONがあります。

エラーがどこにあるかを見てください。

SELECT dle_comments.id、post_id、dle_comments.user_id、dle_comments.date、dle_comments.autor as gast_name、dle_comments.email as gast_email、text、ip、is_register、group_concat(mid)as awards、name、dle_users.email、news_num、dle_user 、user_group、lastdate、reg_date、signature、foto、fullname、land、icq、dle_users.xfields、dle_post.title、dle_post.date as newsdate、dle_post.alt_name、dle_post.category FROM
dle_comments LEFT JOIN dle_awards
ON uid = dle_post post_id = dle_post.id
LEFT JOIN dle_users ON dle_comments.user_id = dle_users.user_id ORDER BY id desc LIMIT 0,30

=============
ジャンクションを実行するときは、正しい構文を参照してください... TABLE1 LEFT JOIN TABLE2 ON TABLE1.columnName=TABLE2.columnNameから。したがって、イタリックブロックの2つの連続するONの1つを削除し、残りのON部分で使用するためにdle_commentsから1つの列を指定し、dle_awardsから別の列を指定します。

于 2012-08-06T21:28:26.910 に答える
1

別の ON 句の直後に ON 句があります。2 番目のもので指定されたテーブル/列に基づいて、そこに dle_post への JOIN が欠落しているように見えます。

-- existing:
LEFT JOIN dle_awards ON uid = dle_post ON dle_comments.post_id=dle_post.id 
-- becomes:
LEFT JOIN dle_awards ON uid = dle_post LEFT JOIN dle_post ON dle_comments.post_id=dle_post.id 

もちろん、(最初の ON 句の) dle_post が実際に有効であるように見えないため、おそらく微調整が必​​要です。スキーマを確認する必要があります。

于 2012-08-06T21:05:04.487 に答える
1
... ON uid = dle_post LEFT JOIN ON dle_comments.post_id=dle_post.id ...

上記の LEFT JOIN を 2 つの「ON」句の間に追加します

于 2012-08-06T21:05:26.093 に答える