2017-01-23 63 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