#1066 - 不唯一的表/别名:'clients'

Qui*_*kEG 2 mysql

我有问题:

#1066 - 不唯一的表/别名:'clients'

SELECT request.*, 
       clients.ClientName AS ToClient, 
       clients.ClientName AS FromClient, 
       drivers.DriName, requesttype.ReqTName 
FROM request
    INNER JOIN clients ON clients.ClientID = request.ReqToClient
    INNER JOIN clients ON clients.ClientID = request.ReqFromClient
    INNER JOIN drivers ON drivers.DriID = request.DriID
    INNER JOIN requesttype ON requesttype.ReqTID = request.ReqTID
Run Code Online (Sandbox Code Playgroud)

ype*_*eᵀᴹ 5

clients在同一FROM个子句中加入了两次,这会引发错误。

表的两个化身需要有不同的别名(选择:cl_tocl_from):

SELECT request.*, 
       cl_to  .ClientName AS ToClient, 
       cl_from.ClientName AS FromClient, 
       drivers.DriName, requesttype.ReqTName 
FROM request
    INNER JOIN clients AS cl_to    -- alias 1 
        ON cl_to.ClientID = request.ReqToClient
    INNER JOIN clients AS cl_from   -- alias 2
        ON cl_from.ClientID = request.ReqFromClient
    INNER JOIN drivers
        ON drivers.DriID = request.DriID
    INNER JOIN requesttype
        ON requesttype.ReqTID = request.ReqTID ;
Run Code Online (Sandbox Code Playgroud)

我更喜欢对所有表使用(短)别名:

SELECT rq.*, 
       cl_to  .ClientName AS ToClient, 
       cl_from.ClientName AS FromClient, 
       dr.DriName, rt.ReqTName 
FROM request AS rq
    INNER JOIN clients AS cl_to   ON cl_to.ClientID = rq.ReqToClient
    INNER JOIN clients AS cl_from ON cl_from.ClientID = rq.ReqFromClient
    INNER JOIN drivers AS dr      ON dr.DriID = rq.DriID
    INNER JOIN requesttype AS rt  ON rt.ReqTID = rq.ReqTID ;
Run Code Online (Sandbox Code Playgroud)