Как решить недостающее предложение FROM в PostgreSQL? - PullRequest
0 голосов
/ 08 сентября 2018

Я создал следующие таблицы и типы в PosgreSQL.

CREATE TYPE WordTy AS (
 id VARCHAR(20)  
);

CREATE TYPE PageTy AS (
  url VARCHAR(100),
  title VARCHAR(60),
  data_lettura DATE
);

CREATE TYPE OccurrenceTy AS (
  word WordTy,
  page PageTy,
  occurrences_number INTEGER
  );

CREATE TABLE Page OF PageTy(PRIMARY KEY(url));

CREATE TABLE Word OF WordTy(PRIMARY KEY(id));

CREATE TABLE Occurrence OF OccurenceTY;

Я хочу знать все страницы, содержащие данное слово.
Когда я запускаю этот запрос:

SELECT occ.page.title as page_title, occ.page.url as url_page FROM 
  Occurrence occ WHERE occ.id=1 

Вывод:

ERROR:  missing FROM-clause entry for table "page"

Где я не прав?

1 Ответ

0 голосов
/ 08 сентября 2018

См. Доступ к составным типам .

Вам необходимо использовать скобки: (occ.page).title.


У вас также есть некоторые опечатки в вашем SQL:

CREATE TABLE Occurrence OF OccurenceTY;

должно быть

CREATE TABLE Occurrence OF OccurrenceTy;

FROM Occurrences occ

должно быть

FROM Occurrence occ

и

WHERE occ.id=1

должно быть

WHERE (occ.word).id='1'


Окончательный запрос:

SELECT (occ.page).title as page_title, (occ.page).url as url_page FROM 
  Occurrence occ WHERE (occ.word).id='1'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...