2012-08-07 51 views
-1

我有一個教程 http://www.kendoui.com/blogs/teamblog/posts/12-01-18/get_rolling_with_kendo_ui_and_php_ndash_part_1.aspx需要幫助翻譯MySQL查詢的Postgres

亂搞和使用的Postgres從這裏羅斯文端口: http://code.google.com/p/northwindextended/downloads/detail?name=northwind.postgre.sql

我不能得到這個查詢,以便對數據庫執行:

SELECT TRIM(t.TerritoryDescription) AS TerritoryDescription 
      FROM Territories t     
      INNER JOIN EmployeeTerritories et ON t.TerritoryID = et.TerritoryID  
      INNER JOIN Employees e ON et.EmployeeID = e.EmployeeID   
      WHERE e.EmployeeID = 1 

的錯誤是:

 
ERROR: column t.territoryid does not exist 
LINE 3:    INNER JOIN EmployeeTerritories et ON t.Territory 

但表territoriesterritoryid列都在那裏。

+1

你得到的錯誤是什麼? – 2012-08-07 00:49:23

+0

更新了錯誤的問題 – zcaudate 2012-08-07 00:54:46

+2

區分大小寫的列名可能? – 2012-08-07 01:07:00

回答

1

的問題是,在你已經用於創建數據庫的SQL,您使用的列報名稱:

CREATE TABLE territories (
    "TerritoryID" character varying(20) NOT NULL, 
    "TerritoryDescription" bpchar NOT NULL, 
    "RegionID" smallint NOT NULL 
); 

由於您使用了帶引號的名稱,因此postgres期望列大小寫匹配。然而,將被默認小寫所有列名:

PostgreSQL自動摺疊所有標識符(例如表/列 名稱)在對象創建時間和在查詢時爲小寫值。 要強制使用混合或大寫標識符,必須使用雙引號(「」)標識標識符 。

PHP pgsql documentation

因此,請在執行查詢時引用""中的列名。

+0

太棒了!這解釋了它。 – zcaudate 2012-08-07 01:16:24

0

感謝@Adrian康沃爾, 這是區分大小寫的,所以這個工作現在:

SELECT TRIM(t."TerritoryDescription") AS "TerritoryDescription" 
     FROM Territories t     
     INNER JOIN employeeterritories et ON t."TerritoryID" = et."TerritoryID"  
     INNER JOIN employees e ON et."EmployeeID" = e."EmployeeID"   
     WHERE e."EmployeeID" = 1