2017-01-23 51 views
0
select packages.id AS id, 
packages.co_id AS co_id, 
(select companies.name from companies where (packages.co_id = companies.id)) AS co_name, 
(select companies.tel from companies where (packages.co_id = companies.id)) AS tel, 
packages.datetime AS datetime, 
(select tracking.datetime from tracking where (packages.id = tracking.pid and action='tookit')) AS tooktime, 
(select tracking.datetime from tracking where (packages.id = tracking.pid and action='putit')) AS puttime, 
packages.status AS status from packages 

,因为它应该当我运行它,但是当我做它作为一个视图犯规表现出同样的结果,我得到的领域零点“这个查询工作良好跟踪”表MySQL查询犯规给我同样的结果,当我创建视图

我重新查询仍然有问题

SELECT t1.id , t1.co_id , t2.name, t2.tel, t1.datetime , t3.datetime as tookit, t4.datetime as putit 
FROM packages as t1 

INNER JOIN companies as t2 
ON t1.co_id=t2.id 

left JOIN tracking as t3 
ON t1.id = t3.pid and t3.action ='tookit' 

left JOIN tracking as t4 
ON t1.id = t4.pid and t4.action ='putit' 

我感谢所有帮助

+1

您的底层数据是否有变化? –

+0

不,我在同一时间在查询和视图中进行刷新没有相同的结果 – yoss

+0

您的视图看起来几乎与查询相同吗?或者那里有不同的逻辑? –

回答

0

重写你的查询检查是否有帮助。

 

    SELECT 
     packages.id AS id, 
     packages.co_id AS co_id, 
     companies.name AS co_name, 
     companies.tel AS tel, 
     packages.datetime AS DATETIME, 
     t1.datetime AS tooktime, 
     t2.datetime AS puttime, 
     packages.status AS STATUS 
    FROM 
     packages 
     LEFT JOIN companies 
     ON packages.co_id = companies.id 
     LEFT JOIN tracking t1 
     ON packages.id = t1.pid 
     AND t1.ACTION = 'tookit' 
     LEFT JOIN tracking t2 
     ON packages.id = t2.pid 
     AND t2.ACTION = 'putit' 

+0

未知列't1.tracking。 datetime'in'field list' – yoss

+0

编辑我的答案检查现在。 – Rakesh

+0

它的工作原理,但对不起,告诉你,它给了我相同的结果 – yoss