SQL - UPDATE SELECT, 3 tables

Sadd

SQL - UPDATE SELECT, 3 tables
« kdy: 02. 11. 2014, 20:54:18 »
Zdravím,
 mám před sebou zajímavý problém(výzvu :D ).
3 Tabulky(obrazně):
Zakaznik - id_zakaznika, billance
Header - id_header,id_zakaznika
Product - id, value.
No k výzvě:
Jedním update-> Select dotazem, dopočítat billanci u zákazníka, pomocí spojení z Header a Productu.
Dostal jsem s k výpisu kde je suma hodnoty produktu a id faktury:
Kód: [Vybrat]
SELECT SUM(Product .value)as suma,Product .id_header as id_zakaznik FROM Product INNER JOIN Header on Product .id_header=Header .id_header GROUP BY id_product

 
Což mi ukáže tedy bilanci Zakaznika a jeho ID. Nicméně, jak to nejšikovněji napasovat do UPDATE?
Kód: [Vybrat]
UPDATE Zakaznik
SET Zakaznik.billance=
(
SELECT SUM(Product.value)as suma
FROM Product
INNER JOIN Zahlavi on Product .id_header=Header.id_header
)
FROM Zakaznik Inner Join Header on Header.id_zakaznika=Zakaznik.id_zakaznika;
Mi boužel nefunguje - nemůže, potřeboval bych to spárovat. Děkuji
Děkuji za čas :)


devnull

Re:SQL - UPDATE SELECT, 3 tables
« Odpověď #1 kdy: 02. 11. 2014, 21:38:37 »
Nejak takto?

Kód: [Vybrat]
UPDATE Zakaznik
SET Zakaznik.billance=
(
SELECT SUM(Product.value)as suma
FROM Product
INNER JOIN Zahlavi on Product .id_header=Header.id_header
WHERE Heaser.id_zakaznik = Zakaznik.id_zakaznik
)

Sadd

Re:SQL - UPDATE SELECT, 3 tables
« Odpověď #2 kdy: 02. 11. 2014, 21:46:23 »
Děkuji :)

Ivan

Re:SQL - UPDATE SELECT, 3 tables
« Odpověď #3 kdy: 03. 11. 2014, 10:50:29 »
Tady je dulezity vedet o jakou databazi se jedna. Napr. Oracle a MSSQL podporuji tzv. update-able join, i kdyz kazda s trochu jinou syntaxi.
 

Sadd

Re:SQL - UPDATE SELECT, 3 tables
« Odpověď #4 kdy: 03. 11. 2014, 13:16:04 »
Právě MSSQL