mysqlsqlselectjoinmysql-error-1066

SQLSTATE Error Syntax error or access violation: 1066 Not unique table/alias: 'users_sessions'


I've got an error with a simple query using a join.

My query :

SELECT users_sessions.user_id AS users_sessions_user_id,
       users.last_name AS users_last_name,
       users.first_name AS users_first_name 
FROM prefix_users_sessions AS users_sessions,
     prefix_users AS users INNER JOIN 
     users_sessions 
     ON users.id = users_sessions.user_id

My error :

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

I don't understand the message... i don't see where the alias is used more that one.

Who can help me to solve this problem ?

Thankz by advance for your help.

--SOLVED--

The good query is the following :

    SELECT users_sessions.id AS users_sessions_id,
           users_sessions.user_id AS users_sessions_user_id,
           users.lastname AS users_lastname, users.firstname AS
           users_firstname
    FROM prefix_users_sessions AS users_sessions
           JOIN prefix_users AS users ON users.id = users_sessions.user_id 

Solution

  • Your from clause is all messed up. A simple rule: Never use commas in the FROM clause. Always use explicit JOIN syntax.

    Also, use shorter table aliases so your query is easier to write and to read:

    SELECT us.user_id AS users_sessions_user_id,
           u.last_name AS users_last_name,
           u.first_name AS users_first_name 
    FROM prefix_users_sessions us INNER JOIN
         prefix_users  u 
         ON u.id = us.user_id;
    

    This assumes that you don't really have a table called users_sessions, and the intention is to use a table called prefix_users_sessions.