首页 > 解决方案 > MySQL 选择和加入 - 不明确的列

问题描述

我正在尝试将四个表连接在一起。当我只比较 EVENT_DATA 并加入 PERSONA 表时,代码工作正常,因为我能够从 PERSONA 获取“名称”列(EVENT_DATA 表中不存在该列)。但是,问题之一是这个“名称”列也存在于 CUSTOMCAR 表中,所以我只能取其一。此外,当我尝试添加最后一个 join 语句时,代码根本不会运行。

如果有人可以帮助我,那就太好了!

$sql = "SELECT * FROM EVENT_DATA
LEFT JOIN PERSONA ON EVENT_DATA.personaId = PERSONA.ID
LEFT JOIN CUSTOMCAR ON CUSTOMCAR.ownedCarId = EVENT_DATA.carId
LEFT JOIN CARCLASSES ON CARCLASSES.store_name = CUSTOMCAR.name
WHERE (EVENT_DATA.EVENTID = '299')";

标签: mysql

解决方案


您还可以使用别名

$sql = "SELECT ed.*, 
               pa.*, 
               cc.*, 
               ccs.* 
        FROM EVENT_DATA AS ed
        LEFT JOIN PERSONA AS pa ON ed.personaId = pa.ID
        LEFT JOIN CUSTOMCAR AS cc ON cc.ownedCarId = e.carId
        LEFT JOIN CARCLASSES AS ccs ON ccs.store_name = cc.name
        WHERE (ed.EVENTID = '299')";

注意:尽管正如@Lukasz所建议的那样,您确实应该避免使用通配符(*)SELECT ,并在子句中提供明确的列列表。


推荐阅读