1

現在のSQLクエリは、MySQL5.1.37を実行しているMAMP1.8.4でローカルに正常に機能します。

  SELECT 
    EL.log_actions, EL.log_date, EL.log_value, EL.log_type,    
    EA.admins_name, 
    EU.users_name, EU.users_matric
  FROM events_log EL
  JOIN events_users EU
    USING (users_id)          
  JOIN events_admins EA
    USING (admins_id)
  ORDER BY EL.log_id DESC
  LIMIT 0, 10

ただし、このクエリをMySQL 4.1.22標準を実行している本番サーバーに公開すると、次のエラーが発生しました(エントリにデータがあるかどうかに関係なく)。

A Database Error Occurred

Error Number: 1054

Unknown column 'sceclub_exclaim2007.EU.admins_id' in 'on clause'

SELECT EL.log_actions, EL.log_date, EL.log_value, EL.log_type, 
EA.admins_name, EU.users_name, EU.users_matric 
FROM events_log EL 
JOIN events_users EU USING (users_id) 
JOIN events_admins EA USING (admins_id) 
ORDER BY EL.log_id 
DESC LIMIT 0, 20

これはCodeIgniter1.7.2に基づいており、本番環境と開発環境の両方で同じデータベースのセットが実行されています。

データベーステーブル

events_users: users_id users_name users_credits 
  users_matric users_redeem

events_admins: admins_id admins_email admins_name 
  admins_pass admins_date admins_modified admins_last_login 

events_attendance: attendance_id users_id events_id

events_events: events_id events_name events_venue events_time 
  events_desc events_pass 

events_log:log_id admins_id log_actions log_date log_value 
  users_id log_type

私はMySQLを初めて使用するので、バージョンの違いや考えられる原因を認識していません。よろしくお願いします。

MySQL4の違いをグーグルで試しても無駄になりました。また使用してみました

  SELECT 
    EL.log_actions, EL.log_date, EL.log_value, EL.log_type,    
    EA.admins_name, 
    EU.users_name, EU.users_matric
  FROM events_log EL
  JOIN events_users EU
    where EL.users_id = EU.users_id
  JOIN events_admins EA
    USING EL.admins_id = EA.admins_id
  ORDER BY EL.log_id DESC
  LIMIT 0, 10

しかし、その後、本番と開発の両方でエラーが発生しました。

データベースエラーが発生しました

エラー番号:1064

SQL構文にエラーがあります。8行目の「JOINevents_adminsEAUSING EL.admins_id = EA.admins_id ORDER BY」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

SELECT EL.log_actions、EL.log_date、EL.log_value、EL.log_type、EA.admins_name、EU.users_name、EU.users_matric FROM events_log EL JOIN events_users EU where EL.users_id = EU.users_id JOIN events_admins EA USING EL.admins_id = EA.admins_id ORDER BY EL.log_id DESC LIMIT 0、20

MySQL 5構文で行ったのと同じ効果を達成するために、MySQL 4構文について詳しく読むことができるいくつかのリソースを教えていただければ、お知らせください。

再度、感謝します!

4

2 に答える 2

2
 SELECT 
    EL.log_actions, EL.log_date, EL.log_value, EL.log_type,    
    EA.admins_name, 
    EU.users_name, EU.users_matric
  FROM events_log AS EL
  JOIN events_users AS EU
    ON EL.users_id = EU.users_id
  JOIN events_admins EA
    ON EL.admins_id = EA.admins_id
  ORDER BY EL.log_id DESC
  LIMIT 0, 10
于 2010-03-20T21:41:01.507 に答える
1

試した2番目のクエリには、キーワードONではなくUSING、またはwhere:が含まれている必要があります。

SELECT 
  EL.log_actions, EL.log_date, EL.log_value, EL.log_type,    
  EA.admins_name, 
  EU.users_name, EU.users_matric
FROM events_log EL
JOIN events_users EU
  ON EL.users_id = EU.users_id
JOIN events_admins EA
  ON EL.admins_id = EA.admins_id
ORDER BY EL.log_id DESC
LIMIT 0, 10

、、またはを使用するかどうかまだわからない場合は、 JOINの構文を確認してください。WHEREONUSING

于 2010-03-20T21:42:56.903 に答える