web-dev-qa-db-de.com

MySQL 'user_id', bei dem die Klausel mehrdeutig ist

Wie kann ich das Problem beheben, das ich aus dem Code unten bekomme, der 'user_id' in where clause is ambiguous angibt. Vielen Dank für die Hilfe im Voraus.

Hier ist die MySQL-Tabelle.

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

Sie müssen lediglich angeben, welcher user_id verwendet werden soll, da sowohl die user_info- als auch die user-Tabelle ein Feld mit dem Namen user_id haben:

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

SQL würde diese Mehrdeutigkeit nicht tolerieren, da beide Felder für völlig unterschiedliche Daten stehen können.

33
Daniel Vassallo

Versuche dies.

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

Sie sollten den Aliasnamen Ihrer Spalte angeben und user_id wie zuweisen 

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

Die Lösung besteht darin, jede Spalte explizit überall auszuwählen. Verwenden Sie in Ihrer Auswahlliste nicht user. * Und user_info. *, Entweder:

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