2017-05-27 4 views
1

ここに私のSQLクエリです:このエラーはなぜ発生しますか?構文エラーまたはアクセス違反:テーブル/別名1066ユニークではありません:「従業員

SELECT Employees.employee_id AS `Employees__employee_id`, 
    Employees.designation_id AS `Employees__designation_id`, 
    Employees.first_name AS `Employees__first_name`, 
    Employees.last_name AS `Employees__last_name`, 
    Employees.address AS `Employees__address`, 
    Employees.contact_no AS `Employees__contact_no`, 
    Employees.joining_date AS `Employees__joining_date`, 
    Employees.username AS `Employees__username`, 
    Employees.password AS `Employees__password`, 
    Employees.basic_pay AS `Employees__basic_pay`, 
    Employees.create_date AS `Employees__create_date`, 
    Employees.status AS `Employees__status`, 
    Designations.designation_id AS `Designations__designation_id`, 
    Designations.designation_name AS `Designations__designation_name`, 
    Designations.description AS `Designations__description` 
FROM employees Employees 
INNER JOIN employees Employees 
    ON Employees.employee_id = (Employees.employee_id) 
INNER JOIN designations Designations 
    ON Designations.designation_id = (Employees.designation_id) 
LIMIT 20 OFFSET 0 

私が得るエラーは次のとおりです。

Error: SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'Employees'!

あなたはこの中で私を助けることができます。

答えて

0

クエリで複数のテーブルに同じエイリアス(Employees)を使用することはできません。ここでは、fromjoinの両方の句で使用しています。それらのいずれかで別名を使用するだけでOKです。あなたのMySQLがケース(LinuxやUnix上など)に敏感に実行したり、Windows上でそれを実行した場合失敗するかもしれませんが、後でINNER JOIN句に限りOKですテーブルの別名Employeesを設定しているあなたのFROM句で

+0

Thanxプロ。どうすればcakephpでクエリを編集できますか? –

0

あなたは同じエイリアスでテーブルに参加します。これは複製エイリアスです。 SQLでは重複したエイリアスが許可されていません。そうしないと、たとえばEmployees.designation_idを呼び出すときに、どのテーブルから評価するべきかがわかりません。

メインテーブルと結合テーブルのテーブルエイリアスは、同じテーブルに参加するかどうかにかかわらず異なる必要があります。

更新:もう一度同じテーブルに参加する必要はないかもしれません。 inner join employees部分を落とす:

SELECT Employees.employee_id AS `Employees__employee_id`, 
    Employees.designation_id AS `Employees__designation_id`, 
    Employees.first_name AS `Employees__first_name`, 
    Employees.last_name AS `Employees__last_name`, 
    Employees.address AS `Employees__address`, 
    Employees.contact_no AS `Employees__contact_no`, 
    Employees.joining_date AS `Employees__joining_date`, 
    Employees.username AS `Employees__username`, 
    Employees.password AS `Employees__password`, 
    Employees.basic_pay AS `Employees__basic_pay`, 
    Employees.create_date AS `Employees__create_date`, 
    Employees.status AS `Employees__status`, 
    Designations.designation_id AS `Designations__designation_id`, 
    Designations.designation_name AS `Designations__designation_name`, 
    Designations.description AS `Designations__description` 
FROM employees Employees 

INNER JOIN designations Designations 
    ON Designations.designation_id = (Employees.designation_id) 
LIMIT 20 OFFSET 0 
+0

ありがとう..しかし、cakephpの場合はどのようにクエリを編集できますか? –

+0

@dif_side - updated。 –

関連する問題