2015-05-25 2 views
0

У меня есть две таблицы:Обновление таблицы на основе другой таблицы в PostgreSQL

продукты

| id | name  | price | type_id 
------------------------------------ 
| 1 | Product A | 500 | 1 
| 2 | Product B | 600 | 3 
| 3 | Product C | 800 | 15 

типы

| id | price | 
--------------- 
| 1 |  | 
| 3 |  | 
| 15 |  | 

Теперь я хочу, чтобы установить цену в таблица значений в продукты таблица, имеющая соответствующий тип_ид

Так что в таблице типов 1 => 500, 3 => 600, 15 => 800, учитывая тот факт, что type_id уникален в таблице продуктов.

Я пытался написать запрос типа:

UPDATE types SET price = (
    SELECT sub.price FROM (SELECT p.type_id AS id, p.price AS price 
          FROM products p, types t 
          WHERE p.type_id = t.id) AS sub 
    WHERE sub.id = types.id 
) 

Однако запрос не получить, чтобы работать правильно и кажется слишком сложным. Как мне это сделать?

ответ

1

Если тип приписывается только один продукт в максимуме так:

UPDATE types set price = products.price 
from products where products.type_id= types.id 
+0

Да. Я правильно работаю в своем случае. Я приму свой ответ сейчас: D – DucCuong

Смежные вопросы