2016-03-01 2 views
1

У меня есть таблица, которая содержит Setpoints 3 колонки Base, Effective и Actual который содержит id, который ссылается на элемент, найденного в io.Найти на который ссылается значение нескольких столбцов

Я хотел бы сделать запрос, который будет возвращать io_value найденные в io таблицы для id найденной в Setpoints.

В настоящее время мой запрос возвращает несколько id «ы, а затем я запрашиваю в io таблицу, чтобы найти io_value для каждого id.

Ex Запрос возврата идентификаторов в строке

row # | base | effective | actual 
    1  | 24 | 30  | 40 
    2  | 25 | 31  | 41 
    3  | 26 | 32  | 42 

Но я хочу его вернуть значение вместо идентификатора

Ex возвращая значение для идентификатора вместо

row # | base | effective | actual 
    1  | 2.3 | 4.5  | 3.44 
    2  | 4.2 | 7.7  | 4.41 
    3  | 3.9 | 8.12  | 5.42 

Здесь представляют собой поля таблицы

IO 
io_value 
io_id 

Setpoints 
stpt_base 
stpt_effective 
stpt_actual 

Использование Postgres 9.5

что им с помощью ныне

SELECT * from setpoints 
For each row 
    SELECT io_id, io_value 
    from io 
    where io_id in 
    (stpt_effective, stpt_actual, stpt_base); 
    // these are from previous query 

ответ

1

Вы можете решить эту проблему путем присоединения к io таблицу три раза в setpoints таблице, используя три столбца в каждом отдельном JOIN:

SELECT a.io_value AS base, 
     b.io_value AS effective, 
     c.io_value AS actual 
FROM setpoints s 
JOIN io a ON a.io_id = s.stpt_base 
JOIN io b ON b.io_id = s.stpt_effective 
JOIN io c ON c.io_id = s.stpt_actual; 
Смежные вопросы