如何使用JOIN进行软订单

时间:2016-06-09 08:04:13

标签: sql postgresql postgresql-9.3 postgresql-9.4

我想对这些表使用具有软顺序的表JOIN:

 CREATE TABLE ACCOUNT(
 ID INTEGER NOT NULL,
 USER_NAME TEXT NOT NULL,
 PASSWD TEXT,
 FIRST_NAME TEXT,
 LAST_NAME TEXT,
 E_MAIL TEXT NOT NULL,
 COUNTRY TEXT,
 STATE TEXT,
 CITY TEXT,
 ADDRESS TEXT,
 STATUS INTEGER,
 SECURITY_QUESTION TEXT,
 SECURITY_ANSWER TEXT,
 LAST_PASSWD_RESET DATE,
 DESCRIPTION TEXT,
 LAST_UPDATED DATE,
 CREATED DATE
)
;

-- ADD KEYS FOR TABLE ACCOUNT

ALTER TABLE ACCOUNT ADD CONSTRAINT KEY1 PRIMARY KEY (ID)
;

ALTER TABLE ACCOUNT ADD CONSTRAINT USER_NAME UNIQUE (USER_NAME)
;

ALTER TABLE ACCOUNT ADD CONSTRAINT E_MAIL UNIQUE (E_MAIL)
;

-- TABLE ACCOUNT_ROLE

CREATE TABLE ACCOUNT_ROLE(
 ID INTEGER NOT NULL,
 USER_NAME TEXT NOT NULL,
 ROLE INTEGER,
 PERMISSION TEXT,
 LAST_UPDATED DATE,
 CREATED DATE
)
;

-- CREATE INDEXES FOR TABLE ACCOUNT_ROLE

CREATE INDEX IX_RELATIONSHIP19 ON ACCOUNT_ROLE (ID)
;

-- ADD KEYS FOR TABLE ACCOUNT_ROLE

ALTER TABLE ACCOUNT_ROLE ADD CONSTRAINT KEY26 PRIMARY KEY (ID)
;

ALTER TABLE ACCOUNT_ROLE ADD CONSTRAINT RELATIONSHIP19 FOREIGN KEY (ID) REFERENCES ACCOUNT (ID) ON DELETE CASCADE ON UPDATE CASCADE
;

工作查询:

SELECT * FROM ACCOUNT ORDER BY %S %S offset ? limit ?

我尝试了这个SQL查询:

SELECT *
FROM ACCOUNT_ROLE
    INNER JOIN ACCOUNT ON ACCOUNT.ID = ACCOUNT_ROLE.ID
ORDER BY Account.%S Account.%S offset ? limit ?

但我收到此错误消息:

Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "Account"
  Position: 99

如何修复此查询?我想从两个表中获取数据并根据值对其进行排序。

1 个答案:

答案 0 :(得分:0)

目前还不完全清楚你在问什么,所以我提出了一些故障排除步骤:

  1. 看起来您正在尝试进行一些查询预处理。请在完成此操作后记录查询,并根据该问题进行故障排除。如果不这样做,请检查PostgreSQL日志中是否存在失败的查询文本字符串(由于处理占位符的方式,记录的查询更好)。

  2. 一旦查看查询本身,请查看它是否存在语法错误。

  3. 问题几乎肯定存在于您未向我们展示的部分代码中。知道如何开始故障排除过程,但值得一提。