Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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/8/mysql/59.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
带左外连接的php mysql_Php_Mysql_Join - Fatal编程技术网

带左外连接的php mysql

带左外连接的php mysql,php,mysql,join,Php,Mysql,Join,我在mysql表1和表2中有两个表 表1包含以下字段 Field Type intProjectId int(11) intSourceId int(11) intClientId int(11) varProject varchar(200) fltAmount float varAmountType varcha

我在mysql表1和表2中有两个表

表1包含以下字段

Field               Type    

intProjectId        int(11)         
intSourceId     int(11)     
intClientId         int(11)     
varProject      varchar(200)    
fltAmount            float              
varAmountType varchar(50)   
dtStart              date       
dtEnd                date   
    Field                                   Type

intPercentageId                     int(11)     
intProjectId                        int(11)         
floatPaymentpercentage              float   
ddDate                              datetime
表2有以下字段

Field               Type    

intProjectId        int(11)         
intSourceId     int(11)     
intClientId         int(11)     
varProject      varchar(200)    
fltAmount            float              
varAmountType varchar(50)   
dtStart              date       
dtEnd                date   
    Field                                   Type

intPercentageId                     int(11)     
intProjectId                        int(11)         
floatPaymentpercentage              float   
ddDate                              datetime
连接两个具有公共项目id的表。如果表2没有具有特定项目id的记录,则可以将其连接为null

表1列出了项目数据 表2给出了其完成百分比。(每个项目有多个记录。) 项目Id——公共字段

我使用了以下查询

SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.intProjectId = table2.intProjectId
GROUP BY table1.varProject ORDER BY table2.intPercentageId DESC
这里我得到的输出是百分比表返回每个项目的第一条记录。我需要表2最后插入的记录

表1==>项目id 5 表2中有3条项目Id为5的记录。我想从表2中找出最后一条记录。现在它返回表2中的第一条记录

如何更改查询。请帮我把这个修好

试试这个

SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.intProjectId = table2.intProjectId
GROUP BY table1.varProject HAVING MAX(table2.intPercentageId)

“Order By”在“Group By”完成后运行,这就是为什么它没有给出预期的结果。我建议的更改将给出第二个表中百分比最高的行,根据场景,该行应为项目的最后一行。

计算表2中每个项目的最大记录,并使用该信息获取最新记录。下面是一个使用
分组方式
的方法:

select t1.*
from table1 t1 join
     table2 t2
     on t1.intProjectId = t2.intProjectId join
     (select t2.intProjectId, max(intPercentageId) as maxpi
      from table2 t2
      group by t2.intProjectId
     ) tt2
     on t2.intProjectId = tt2.maxpi;

计算表2中每个项目的最大记录,并使用该信息获取最新记录。以下是使用分组方式的方法:

select t1.*
 from table1 t1 join
 table2 t2
 on t1.intProjectId = t2.intProjectId join
 (select t2.intProjectId, max(intPercentageId) as maxpi
  from table2 t2
  group by t2.intProjectId
 ) tt2
 on t2.intProjectId = tt2.maxpi;