Выбор значения через другую таблицу Postgresql с тремя внешними ключами - PullRequest
0 голосов
/ 13 сентября 2018

Я не могу понять, как попасть в другие таблицы с несколькими внешними ключами.
Я получил 2 таблицы:

CREATE TABLE product 
  ( 
     id      SERIAL NOT NULL, 
     image   text, 
     PRIMARY KEY (id) 
  ); 

CREATE TABLE spin_result 
  ( 
    id              SERIAL NOT NULL,
    first_slot      INT NOT NULL, 
    second_slot     INT NOT NULL, 
    third_slot      INT NOT NULL, 
    PRIMARY KEY (id),
    FOREIGN KEY (first_slot) REFERENCES product(id),
    FOREIGN KEY (second_slot) REFERENCES product(id),
    FOREIGN KEY (third_slot) REFERENCES product(id)
  );

Я хочу получить этот вывод:

|spin_result.id|first_slot.image|second_slot.image|third_slot.image|

Я пробовал это:

SELECT s_r.id, 
  p.image as "first_slot", 
  p.image AS "second_slot",
  p.image AS "third_slot"
FROM spin_result s_r, product p
WHERE s_r.first_slot = p.id 
  AND s_r.second_slot = p.id 
  AND s_r.third_slot = p.id;

1 Ответ

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

Присоединяйтесь к таблице product три раза, по одному на внешний ключ, например:

SELECT 
    s_r.id, 
    p1.image as "first_slot", 
    p2.image AS "second_slot", 
    p3.image AS "third_slot"
  FROM spin_result s_r
  JOIN product p1 on p1.id = s_r.first_slot
  JOIN product p2 on p2.id = s_r.second_slot
  JOIN product p3 on p3.id = s_r.third_slot

Вы можете присоединиться к одной и той же таблице столько раз, сколько захотите, если используете разные псевдонимы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...