質問

以下のコードから得ている問題をどのように修正できますか 'user_id' in where clause is ambiguous. 。事前に助けてくれてありがとう。

これがMySQLテーブルです。

SELECT user.*, user_info.* 
FROM user 
INNER JOIN user_info ON user.user_id = user_info.user_id
WHERE user_id='$user_id'
役に立ちましたか?

解決

単にどちらを指定する必要があります user_id 両方を使用するために user_infouser テーブルには、呼ばれるフィールドがあります user_id:

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

SQLは、この曖昧さを容認しません。なぜなら、それが知っていることのために、両方のフィールドはまったく異なるデータを表すことができるからです。

他のヒント

解決策は、各列をどこでも明示的に選択することです。ユーザーを使用しないでください。*およびuser_info。*選択リストでは:

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';

これを試して。

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';

列のエイリアス名に言及し、user_idに割り当てる必要があります

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'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top