2017-05-07 13 views
0

を使用して、同じテーブルから値を読み取る:MySQLは、私は、次の表を持っているリセラーID

+----+---------+--------+---------+----------+ 
| id | user | pass | nick | reseller | 
+----+---------+--------+---------+----------+ 
| 1 | admin | 125854 | X-Admin | 2  | 
| 2 | user256 | 123321 | User-256| NULL  | 
+----+---------+--------+---------+----------+ 

を私はクエリからこれを取得する必要があります:

+----+---------+--------+---------+----------+ 
| id | user | pass | nick | reseller | 
+----+---------+--------+---------+----------+ 
| 1 | admin | 125854 | X-Admin | User-256 | 
| 2 | user256 | 123321 | User-256| NULL  | 
+----+---------+--------+---------+----------+ 

私は私の中でtbl.resellerを使用できるように、

SELECT g1.nick 
FROM resellers g1, resellers g2 
INNER JOIN g2 ON g2.reseller=g1.id; 

しかし、私はこのエラーを取得イム:

AJAX HTMLウェブページ...私はこのクエリを使用してみてください
ERROR 1066 (42000): Not unique table/alias: 'g2' 

私は再販業者の値を取得する必要があります。この例では、出力を表示するためにニックネームを取得する必要があります。この例では、ID 1の再販業者の値2を取得します。リセラーとして表示します。

私はエイリアス(g1 g2またはAS?)を使用する必要がありますが、私はそれを行う方法がわからないので、同じテーブルからINNER JOINする必要があります。

ありがとうございました。

答えて

0

あなたは次のクエリ試すことができます:あなたの現在のクエリが間違っている理由については

SELECT 
    r1.id, 
    r1.user, 
    r1.pass, 
    r1.nick, 
    r2.user 
FROM resellers r1 
INNER JOIN resellers r2 
    ON r1.reseller = r2.id 

を、あなたが実際に自己が二回をに参加しています。以下は、単一の自己ジョインを表します

SELECT g1.nick 
FROM resellers g1, resellers g2 

これは私が私の答えに使用される明示的な結合構文に置き換えられている暗黙の参加古いスタイル、です。その後、あなたは自己参加ください:

INNER JOIN g2 ON g2.reseller=g1.id; 

非ユニークなエイリアスエラーの理由は、MySQLがあなたが言及されている2つの結合された表のどちらに把握することができないということです。

+0

ありがとうございました。クエリを試してこのエラーが発生しました:ERROR 1054(42S22): 'field list'の 't2.user'列が不明です.... t2テーブルが見つかりませんでした。 – John

+0

@John申し訳ありません、それは 'r2.user'でなければなりません:-) –

+0

あなたは私に数時間を節約しました..私はエイリアスを使って今日この4時間を試しています。 ..uisng上記の質問を私はこのクエリを右と感謝を得る... – John

関連する問題