Cześć, jestem kompletnie początkująca w SQL, także proszę o wyrozumiałość :)
Sytuacja jest taka, mam cenniki w bazie osobno dla każdego produktu. Produktów jest 39, co daje 39 osobnych tabel. Mają one taka samą strukturę, różnią się tylko numerem produktu.
I teraz chcę wyciągnąć te cenniki w jednej zgrabnej tabeli. Napisałam kod, który działa, ale jest bardzo długi i męczący w edycji i ogólnie czuję, że ze względu na identyczną strukturę pewnie da się to zrobić lepiej. Czy ktoś z Kolegów/Koleżanek potrafiłby mnie nakierować, jak inaczej sformułować te zapytanie?
Korzystam z dataclipów na Heroku (Postrgresql).
--1
SELECT clients.name,
products.full_name,
null AS Number_of_floors,
gross_floor_area AS Area,
null AS Type,
null AS Option,
null AS Style,
price AS Price,
rework_price AS Rework_price,
null AS Report
FROM client_pricing_product1s
INNER JOIN clients ON client_pricing_product1s.client_id = clients.id
INNER JOIN products ON 'product1' = products.id_name
UNION
--2
SELECT clients.name,
products.full_name,
null AS Number_of_floors,
gross_floor_area AS Area,
null AS Type,
null AS Option,
null AS Style,
price AS Price,
rework_price AS Rework_price,
null AS Report
FROM client_pricing_product2s
INNER JOIN clients ON client_pricing_product2s.client_id = clients.id
INNER JOIN products ON 'product2' = products.id_name
UNION
--3
SELECT clients.name,
products.full_name,
null AS Number_of_floors,
gross_floor_area AS Area,
null AS Type,
null AS Option,
null AS Style,
price AS Price,
rework_price AS Rework_price,
null AS Report
FROM client_pricing_product3s
INNER JOIN clients ON client_pricing_product3s.client_id = clients.id
INNER JOIN products ON 'product3' = products.id_name
UNION
--4
SELECT clients.name,
products.full_name,
null AS Number_of_floors,
gross_floor_area AS Area,
null AS Type,
null AS Option,
null AS Style,
price AS Price,
rework_price AS Rework_price,
null AS Report
FROM client_pricing_product4s
INNER JOIN clients ON client_pricing_product4s.client_id = clients.id
INNER JOIN products ON 'product4' = products.id_name
--itd do 39 :)