moDevsome
moDevsome

Reputation: 209

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 

Upvotes: 1

Views: 2178

Answers (3)

Gordon Linoff
Gordon Linoff

Reputation: 1269683

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.

Upvotes: 1

singhsac
singhsac

Reputation: 401

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

Upvotes: 0

Kostas Mitsarakis
Kostas Mitsarakis

Reputation: 4747

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 

Upvotes: 0

Related Questions