tags:

views:

38

answers:

2

How can I correct the problem I keep getting from the code below which states 'user_id' in where clause is ambiguous. Thanks for the help in advance.

Here is the mysql table.

SELECT user.*, user_info.* 
FROM user 
INNER JOIN user_info ON user.user_id = user_info.user_id
WHERE user_id='$user_id'
+2  A: 

You simply need to specify which user_id to use, since both the user_info and user table have a field called user_id:

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

SQL wouldn't tolerate this ambiguity, since for what it knows, both fields can represent totally different data.

Daniel Vassallo
A: 

The solution is to select each column explicitly everywhere. Don't use user.* and user_info.* in your select list, either:

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';
Dave Markle
This isn't really a correct solution to the problem, it just relies on selecting a single user_id column to resolve the ambiguity. I personally prefer the more general solution of specifying the table in the WHERE clause, i.e. `WHERE u.user_id = '$user_id'`
Dustin Fineout
Thanks. Typographical error. Corrected.
Dave Markle