SELECT * FROM `PP`
INNER JOIN `CM_MASTER`.`LOCATIONGUID`
ON `PP`.`ADDR` = `CM_MASTER`.`ADDRESS1`
AND `PP`.`ZIP` = LEFT(`CM_MASTER`.`POSTALCODE`,5);
当我尝试使用来自CM_MASTER表的匹配的LOCATIONGUID记录返回PP表中的所有列时,两个表之间的街道地址和邮政编码匹配。上面的代码返回错误:
#1142 - SELECT command denied to user 'ameridw5'@'localhost' for table 'LOCATIONGUID'
我在phpMyAdmin中运行此查询。 有人能指出我的方向吗?
修改 cm_master表包含address1,zip和LOCATIONGUID列。 pp表有addr和zip列。 如果pp.addr = cm_master.address1和pp.zp = cm_master.zip那么 返回查询中的记录,并加入cm_master.LOCATIONGUID。 这有可能吗?
答案 0 :(得分:6)
你的语法错了。您需要将LEFT
放在table_name.column_name
周围,而不是拆分table_name和column_name。
所以改变
CM_MASTER.LEFT(POSTALCODE,5)
到这个
LEFT(CM_MASTER.POSTALCODE,5)
完整查询将是:
SELECT *
FROM `PP`
INNER JOIN `CM_MASTER`
ON `PP`.`ADDR` = `CM_MASTER`.`ADDRESS1`
AND `PP`.`ZIP` = LEFT(`CM_MASTER`.`POSTALCODE`,5) ;
编辑,目前尚不清楚你的表结构是什么,但是你需要 LocationGUID
,那么你可能还需要添加该列:
SELECT *
FROM `PP`
INNER JOIN `CM_MASTER`
ON `PP`.`LOCATIONGUID` = `CM_MASTER`.`LOCATIONGUID`
AND `PP`.`ADDR` = `CM_MASTER`.`ADDRESS1`
AND `PP`.`ZIP` = LEFT(`CM_MASTER`.`POSTALCODE`,5) ;
击> <击> 撞击>
答案 1 :(得分:1)
似乎此用户ameridw5
未拥有表LOCATIONGUID
只需为此用户设置权限所有权限
GRANT ALL PRIVILEGES on mydb.* to 'ameridw5'@'localhost' identified by 'you';