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

番地と郵便番号が 2 つのテーブル間で一致する場合、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 が結合されたクエリでレコードを返します。これは可能ですか?

4

2 に答える 2

6

あなたの構文は間違っています。table_name と column_name を分割する代わりに、LEFT前後に配置する必要があります。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 に答える