2014-09-12 43 views
1
SELECT z.`id`, z.`ukupno` ,s.uk, (ukupno-uk) as r from zbirni z 
join 
(SELECT k.`iddzid`, (sum(kolicina*cjena)) as uk FROM kasa k join kasa_detalji d on d.idd=k.id group by iddzid) as s 
on s.iddzid=z.id 
where (ukupno-uk)>0 

一个观点,但我有错误 脚本行:1个视图的SELECT语句包含在FROM子句中创建从SELECT语句的多个子查询

回答

0

子查询可以重写查询与联接,以避免子查询的使用和MySQL视图的限制

SELECT 
z.`id`, 
z.`ukupno` , 
SUM(kolicina * cjena) uk, 
(ukupno - SUM(kolicina * cjena)) AS r 
FROM zbirni z 
JOIN kasa k ON(z.id=k.`iddzid`) 
JOIN kasa_detalji d ON (d.idd=k.id) 
GROUP BY z.`id` 
HAVING r > 0 

或每个子查询创建视图,并用它在你看来像

CREATE VIEW calc_sum 
AS 
SELECT k.`iddzid`, 
SUM(kolicina*cjena) AS uk FROM kasa k 
JOIN kasa_detalji d ON d.idd=k.id 
GROUP BY iddzid 

使用calc_sum在您的查询中查看

CREATE VIEW your_view_name 
SELECT 
z.`id`, 
z.`ukupno` , 
s.uk, 
(ukupno-uk) AS r 
FROM zbirni z 
JOIN calc_sum AS s ON s.iddzid=z.id 
WHERE (ukupno-uk)>0