0
SELECT * FROM `PP`
INNER JOIN `CM_MASTER`.`LOCATIONGUID` 
ON `PP`.`ADDR` = `CM_MASTER`.`ADDRESS1` 
AND `PP`.`ZIP` = LEFT(`CM_MASTER`.`POSTALCODE`,5);

当街道地址和 zip 在 2 个表之间匹配时,我试图返回 PP 表中的所有列以及 CM_MASTER 表中匹配的 LOCATIONGUID 记录。上面的代码返回错误:

 #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。这可能吗?

4

2 回答 2

6

你的语法是错误的。您需要放置LEFTtable_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) ;

于 2013-05-02T18:30:28.817 回答
1

似乎该用户ameridw5没有对该表的权限LOCATIONGUID

只需将此用户的权限设置为所有权限

    GRANT ALL PRIVILEGES on mydb.* to 'ameridw5'@'localhost' identified by 'you';

文档:http ://dev.mysql.com/doc/refman/5.1/en/adding-users.html

于 2013-05-02T18:37:26.103 回答