web-dev-qa-db-fra.com

MySQL 'user_id' dans la clause where est un problème ambigu

Comment puis-je corriger le problème que je ne cesse de recevoir à partir du code ci-dessous, qui indique 'user_id' in where clause is ambiguous Merci pour l'aide à l'avance.

Voici la table mysql.

SELECT user.*, user_info.* 
FROM user 
INNER JOIN user_info ON user.user_id = user_info.user_id
WHERE user_id='$user_id'
16
HoMe

Vous devez simplement spécifier le user_id à utiliser, car les tables user_info et user ont toutes les deux un champ appelé user_id:

... WHERE user.user_id='$user_id'

SQL ne tolérerait pas cette ambiguïté, car pour ce qu'il sait, les deux champs peuvent représenter des données totalement différentes.

33
Daniel Vassallo

Essaye ça.

SELECT u.user_id, u.user_fudge, ui.foo, ui.bar
FROM user AS u
INNER JOIN user_info AS ui
   ON ui.user_id = u.user_id
WHERE u.user_id = '$user_id';
0
Dee_wab

Vous devriez mentionner le nom d'alias de votre colonne et affecter à user_id comme 

SELECT user.*, user_info.* 
FROM user as u 
INNER JOIN user_info as ui ON u.user_id = ui.user_id
WHERE u.user_id='$user_id'
0
user3773680

La solution consiste à sélectionner chaque colonne explicitement partout. N'utilisez pas user. * Et user_info. * Dans votre liste de sélection, soit:

SELECT u.user_id, u.user_fudge, ui.foo, ui.bar
FROM user u
INNER JOIN user_info ui
    ON ui.user_id = u.user_id
WHERE u.user_id = '$user_id';
0
Dave Markle