2015-11-05 3 views
1

J'ai une erreur avec une requête simple utilisant une jointure.Erreur SQLSTATE Erreur de syntaxe ou violation d'accès: 1066 Table/alias non unique: 'users_sessions'

Ma requête:

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 

Mon erreur:

SQLSTATE [42000]: Erreur de syntaxe ou violation d'accès: 1 066 pas unique table/alias: 'users_sessions'

Je ne comprends pas le message ... je ne vois pas où l'alias est utilisé plus celui-là.

Qui peut m'aider à résoudre ce problème?

Merci d'avance pour votre aide.

--SOLVED--

La bonne requête est la suivante:

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 

Répondre

1

Votre from clause est tout foiré. Une règle simple: Jamais utiliser des virgules dans la clause FROM. Toujours utiliser la syntaxe explicite JOIN.

En outre, utiliser des alias de table plus courtes afin que votre requête est plus facile à lire et à écrire:

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; 

Cela suppose que vous n'avez pas vraiment une table appelée users_sessions, et l'intention est d'utiliser une table appelé prefix_users_sessions.

+0

Merci pour vos lumières Gordon – MOWebCreation

0

Vous utilisez le nom users_sessions deux fois. D'abord en tant qu'alias de prefix_users_sessions, puis en tant que table normale dans le INNER JOIN. Essayez également d'utiliser INNER JOIN s et non la sélection de deux tables simultanément par exemple (dans votre requête) .:

FROM prefix_users_sessions AS users_sessions, prefix_users AS users 
0

table spécifiée Vous prefix_users_sessions deux fois

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