2011-08-18 22 views
0

同じ問題を抱える他の人の回答を見ましたが、「ユニークでないテーブル/エイリアス」を修正する方法がわかりません。MySQLユニークではないテーブル/エイリアス

SELECT m.*, u.* 
    FROM ".TABLE_PREFIX."users_medals u 
    LEFT JOIN ".TABLE_PREFIX."medals m ON u.medal_id = m.medal_id 
    WHERE u.user_id IN (".$post['uid'].") 
    AND m.medal_level = (
    SELECT MAX(".TABLE_PREFIX."medals.medal_level) FROM ".TABLE_PREFIX."medals 
    LEFT JOIN ".TABLE_PREFIX."medals ON ".TABLE_PREFIX."users_medals.medal_id = ".TABLE_PREFIX."medals.medal_id 
    WHERE ".TABLE_PREFIX."users_medals.user_id = u.user_id 
    AND ".TABLE_PREFIX."medals.medal_type = m.medal_type 
) 

TABLE_PREFIXは、私のスクリプトがデータベーステーブルのプレフィックスを定義するために使用するものです。あなたのサブクエリで

+0

の可能重複[MySQLの&PHP - テーブル/エイリアス一意ではない](http://stackoverflow.com/questions/2077355/mysql-php-not-unique-table -alias) – Phil

+0

どこにユニークでないテーブル/エイリアスを探していますか? – escproxy

答えて

1

LEFTは ".TABLE_PREFIX。" メダル

JOINを私はあなたなし2つのmedalsのテーブルを持っているサブクエリで

LEFT JOIN ".TABLE_PREFIX."users_medals 
+0

Yupp、それは働いた!ありがとう:) – Spencer

0

されるべきだと思いますエイリアス。私はFROM ".TABLE_PREFIX."medalsFROM ".TABLE_PREFIX."users_medalsされるべきだと思う:

SELECT m.*, u.* 
    FROM ".TABLE_PREFIX."users_medals u 
    LEFT JOIN ".TABLE_PREFIX."medals m ON u.medal_id = m.medal_id 
    WHERE u.user_id IN (".$post['uid'].") 
    AND m.medal_level = (
    SELECT MAX(".TABLE_PREFIX."medals.medal_level) FROM ".TABLE_PREFIX."users_medals 
    LEFT JOIN ".TABLE_PREFIX."medals ON ".TABLE_PREFIX."users_medals.medal_id = ".TABLE_PREFIX."medals.medal_id 
    WHERE ".TABLE_PREFIX."users_medals.user_id = u.user_id 
    AND ".TABLE_PREFIX."medals.medal_type = m.medal_type 
) 
関連する問題