0

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

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私のスクリプトがデータベーステーブルのプレフィックスを定義するために使用するものです。

4

2 に答える 2

1

サブクエリで

LEFT JOIN ".TABLE_PREFIX."メダル

そうあるべきだと思います

LEFT JOIN ".TABLE_PREFIX."users_medals
于 2011-08-18T01:53:08.867 に答える
0

サブクエリには、medalsエイリアスのない 2 つのテーブルがあります。私はあるFROM ".TABLE_PREFIX."medalsべきだと思いますFROM ".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
  )
于 2011-08-18T02:02:23.940 に答える