-1

チュートリアル http: //www.kendoui.c​​om/blogs/teamblog/posts/12-01-18/get_rolling_with_kendo_ui_and_php_ndash_part_1.aspxをいじっています

ここからpostgresのnorthwindポートを使用します: 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

エラーは次のとおりです。

エラー:列t.territoryidが存在しません
3行目:内部結合EmployeeTerritories et ON t.Territory

しかし、テーブルterritoriesterritoryid列は両方ともそこにあります。

4

2 に答える 2

1

問題は、データベースの作成に使用した SQL で、引用符で囲まれた列名を使用していることです。

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

引用符で囲まれた名前を使用したため、postgres は列の大文字と小文字が一致することを期待しています。ただし、デフォルトではすべての列名が小文字になります。

PostgreSQL は、オブジェクトの作成時とクエリ時に、すべての識別子 (テーブル/列名など) を自動的に小文字に変換します。混合または大文字の識別子の使用を強制するには、二重引用符 ("") を使用して識別子をエスケープする必要があります。

PHP pgsql ドキュメントから。

""そのため、クエリを実行するときに列名を引用してください。

于 2012-08-07T01:14:46.387 に答える
0

@Adrian Cornishに感謝します。大文字と小文字が区別されるため、これで機能します。

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
于 2012-08-07T01:14:18.463 に答える