2017-05-07 44 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我AJAX HTML网页...我尝试使用此查询:

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

但我即时得到这个错误:

ERROR 1066 (42000): Not unique table/alias: 'g2' 

我需要得到经销商的价值和使用ID得到尼克显示在output..so在这个例子中我得到ID 1经销商价值2什么是在表2中的id 2和读取价值id 2为尼克列并将其显示为经销商。你可以看到我需要INNER JOIN从同一个表,所以我读我需要使用别名(g1 g2或AS?),但我不知道如何做到这一点。

谢谢。

回答

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想不通到两个加盟你是指表。

+0

谢谢..我尝试查询,并得到这个错误:错误1054(42S22):未知列't2.user'在'字段列表'....我会尽量找到whay t2表不存在..谢谢.. – John

+0

@约翰对不起,应该是'r2.user' :-) –

+0

谢谢..你救了我几个小时..我即时尝试这4小时今天与别名内部连接使用WHERE,但我不能得到这个..uisng您的查询上面我得到这个查询权利,并感谢... – John