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

2.1k Views Asked by At

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 
3

There are 3 best solutions below

1
Gordon Linoff On BEST ANSWER

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.

0
Kostas Mitsarakis On

You use name users_sessions twice. First as the alias of prefix_users_sessions and then as a normal table in the INNER JOIN. Also try to use INNER JOINs and not selecting from two tables simultaneously e.g (in your query).:

FROM prefix_users_sessions AS users_sessions, prefix_users AS users 
0
singhsac On

You specified table prefix_users_sessions twice

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
        INNER JOIN prefix_users AS users 
            ON users.id = users_sessions.user_id