当我创建视图时,mysql查询并没有给我相同的结果

时间:2017-01-23 10:00:15

标签: mysql

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

这个查询运行得很好,当我运行它但是当我把它作为一个视图并没有显示相同的结果时我在"跟踪"的字段中得到空值表

我重新创建了查询仍有问题

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 :(得分: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'