0

このクエリ:

$user_mail_all=mysql_query("SELECT * 
FROM `mailing` WHERE MATCH (resp) 
AGAINST ('$user_resp' IN BOOLEAN MODE) 
OR `cor`='$username' ORDER BY `id` DESC  LIMIT ".$start.",".$per_page )

はうまく機能していますが、次のクエリ:

$user_mail_all=mysql_query("SELECT * 
FROM `mailing`WHERE MATCH (resp) 
AGAINST ('$user_resp' IN BOOLEAN MODE) 
OR `cor`='$username' 
LEFT JOIN `mail_views` 
ON mailing.id=mail_views.lid 
AND mail_views.uid=".$_SESSION['uid']." 
ORDER BY `id` DESC  LIMIT ".$start.",".$per_page)

エラーが発生します:

SQL構文にエラーがあります。1行目の「LEFTJOINmail_viewsON mailing.id = mail_views.lid AND mail_views.uid = 12 ORDER」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

なんで?

4

2 に答える 2

1

最初にJOINしてからMATCH

$user_mail_all=mysql_query("SELECT * 
FROM `mailing`
LEFT JOIN `mail_views` 
ON mailing.id=mail_views.lid 
WHERE MATCH (resp) 
AGAINST ('$user_resp' IN BOOLEAN MODE) 
OR `cor`='$username' 
AND mail_views.uid=".$_SESSION['uid']." 
ORDER BY `id` DESC  LIMIT ".$start.",".$per_page)
于 2013-01-12T17:44:38.897 に答える
0

左結合のクエリ実装が間違っています...次のようにする必要があります。

select * from Table1 left join table2 where .....

だからこれを使う:

           $user_mail_all=
                mysql_query(
                             "SELECT * 
                                FROM `mailing`
                           LEFT JOIN `mail_views` 
                                 ON ( mailing.id=mail_views.lid 
                                     AND mail_views.uid=".$_SESSION['uid']".)
                              WHERE MATCH (resp) 
                                    AGAINST ('$user_resp' IN BOOLEAN MODE) 
                                 OR `cor`='$username'
                           ORDER BY `id` DESC  LIMIT ".$start.",".$per_page);
于 2013-01-12T18:03:09.123 に答える