Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql mysq:在FROM和WHERE子句中使用相同的子查询而不重复它?_Mysql_Database - Fatal编程技术网

Mysql mysq:在FROM和WHERE子句中使用相同的子查询而不重复它?

Mysql mysq:在FROM和WHERE子句中使用相同的子查询而不重复它?,mysql,database,Mysql,Database,我需要选择车间中最长的所有车辆的数据。因此,如果最大天数为16天,并且有多辆车有16天,我需要所有这些车 我的模特是这样的 汽车:id车、mat车、mod车、颜色、类型 期间:id\u per、日期\u ini、日期\u fin 关系4:身份证,身份证 这个方法可以工作,但是有没有一种方法可以不在FOR和WHERE子句中重复相同的子查询就可以工作呢 从中选择* 从汽车中选择Car.mat\u Car、mod\u Car、颜色、类型、日期ini、日期fin、日期diffdate\u fin、日期i

我需要选择车间中最长的所有车辆的数据。因此,如果最大天数为16天,并且有多辆车有16天,我需要所有这些车

我的模特是这样的

汽车:id车、mat车、mod车、颜色、类型

期间:id\u per、日期\u ini、日期\u fin

关系4:身份证,身份证

这个方法可以工作,但是有没有一种方法可以不在FOR和WHERE子句中重复相同的子查询就可以工作呢

从中选择* 从汽车中选择Car.mat\u Car、mod\u Car、颜色、类型、日期ini、日期fin、日期diffdate\u fin、日期ini daysInWorkshop 轿厢上的内部连接继电器4.mat_轿厢=继电器4.mat_轿厢 Relacion4.id\u per上的内部连接周期=Periodo.id\u per 卡维杜尔 其中daysInWorkshop= 从中选择maxdaysInWorkshop 从汽车中选择datediffdate\u fin,date\u ini Days in车间 轿厢上的内部连接继电器4.mat_轿厢=继电器4.mat_轿厢 Relacion4.id\u per上的内部联接周期=Period.id\u per 卡维杜尔 ;
我想你可以瘦一点

    select Car.mat_car, mod_car, color, type, 
          date_ini, date_fin, datediff(date_fin, date_ini) daysInWorkshop 
    from Car
    inner join Relacion4 on Car.mat_car = Relacion4.mat_car
    inner join Period on Relacion4.id_per = Periodo.id_per
    where datediff(date_fin, date_ini) = 
    (
    select max(datediff(date_fin, date_ini)) 
    from Period
    )
    ;
如果这不符合您的意愿,请将示例数据和预期输出作为文本添加到问题中


顺便说一句,你从哪里得到Relacion4.mat_车?它不在你发布的表格中!!Periodo拼写错误。

您可以创建一个视图。或者也许有一种方法可以优化这个查询。你不需要加入relacion4和car来获得最长天数。但是你需要在where中重复一些。不过,select*from是不必要的。