Попробуйте что-то вроде этого ...
UPDATE table_name set montant_dernier_paiement = 25.78 WHERE n_paiement = 1
UPDATE table_name set montant_dernier_paiement = 13.81 WHERE n_paiement = 2
Я думаю, что вы можете делать то, что вы хотите с условной агрегацией:
select p.id, p.description, p.pages, p.title,
max(case when pp.type = 0 then pp.value end) as ebook_price,
max(case when pp.type = 1 then pp.value end) as impress_price,
max(case when pp.type = 2 then pp.value end) as combo_price
from Produto p inner join
Product_prices pp
on p.id = pp.Product_id
where lower(p.title) like '%1%'
group by p.id, p.description, p.pages, p.title;
Напомните, какую часть проблемы не решает следующая проблема ...
DROP TABLE IF EXISTS product;
CREATE TABLE product
(id SERIAL PRIMARY KEY
,title VARCHAR(30) NOT NULL
,pages INT NOT NULL
);
INSERT INTO product VALUES
(1,'Harry Potter',230),
(2,'Lord of the Rings',950),
(3,'Game of Thrones',980);
DROP TABLE IF EXISTS prices;
CREATE TABLE prices
(product_id INT NOT NULL
,book_type INT NOT NULL
,price DECIMAL(5,2) NOT NULL
,PRIMARY KEY(product_id,book_type)
);
INSERT INTO prices VALUES
(1,0,20.40),
(1,1,28.00),
(1,2,40.00),
(2,0,15.00),
(2,1,25.50),
(2,2,42.00),
(3,0,21.00),
(3,1,30.50),
(3,2,47.00);
SELECT c.*
, a.*
FROM prices a
JOIN prices b
ON b.product_id = a.product_id
JOIN product c
ON c.id = b.product_id
WHERE b.price LIKE '%1%';
+----+-------------------+-------+------------+-----------+-------+
| id | title | pages | product_id | book_type | price |
+----+-------------------+-------+------------+-----------+-------+
| 2 | Lord of the Rings | 950 | 2 | 0 | 15.00 |
| 2 | Lord of the Rings | 950 | 2 | 1 | 25.50 |
| 2 | Lord of the Rings | 950 | 2 | 2 | 42.00 |
| 3 | Game of Thrones | 980 | 3 | 0 | 21.00 |
| 3 | Game of Thrones | 980 | 3 | 1 | 30.50 |
| 3 | Game of Thrones | 980 | 3 | 2 | 47.00 |
+----+-------------------+-------+------------+-----------+-------+