MYSQL:使用一个表中的不同值在两个表中左连接

MYSQL:使用一个表中的不同值在两个表中左连接,mysql,group-by,left-join,Mysql,Group By,Left Join,我想连接两个具有公共列stationcode的表(TABLE vfdefects&tempsubstation)。 问题是tempsubstation有重复的列值,而我只需要每个唯一值的计数。在我当前的尝试中,使用LEFT JOIN和groupby 表A ID | stationID | code 表B A | B | C | D | stationcode 查询如下: SELECT DISTINCT TS.substationid,'20130924',ts.employeeid,ts

我想连接两个具有公共列stationcode的表(TABLE vfdefects&tempsubstation)。 问题是tempsubstation有重复的列值,而我只需要每个唯一值的计数。在我当前的尝试中,使用
LEFT JOIN
groupby

表A
ID | stationID | code

表B
A | B | C | D | stationcode

查询如下:

SELECT DISTINCT     TS.substationid,'20130924',ts.employeeid,ts.substationcode,ts.manufacturingproductid,ts.assemblylineid,ts.teamid,ts.subofficecode,
TA.AllowID,ta.OtherAllowanceID,ta.allowname,ta.minbenchmark,ta.maxbenchmark,COUNT(vfd.DefectsID) Achieved

FROM tempsubstation ts
LEFT JOIN TempAllowances ta ON ts.manufacturingproductid=ta.manufacturingproductid AND ts.subofficecode=ta.subofficecode AND ta.teamid=ts.teamid
LEFT JOIN wms_assemblyqcmapping aqc ON ts.subofficeid=aqc.subofficeid AND ts.manufacturingproductid=aqc.manufacturingproductid AND ts.assemblylineid=aqc.assemblylineid
LEFT JOIN wms_vfdefects vfd ON vfd.QCStationCode=aqc.QCStationCode AND ts.SubstationCode =vfd.MFGStationNum AND DATE(vfd.CreationDate)='2013-09-24'
WHERE ta.AllowID=42
 GROUP BY ta.minbenchmark,ta.maxbenchmark,ts.substationid
 HAVING COUNT(vfd.DefectsID)>=ta.minbenchmark AND COUNT(vfd.DefectsID)<=ta.maxbenchmark
选择不同的TS.substationid、'20130924',TS.employeeid、TS.substationcode、TS.manufacturingproductid、TS.assemblylineid、TS.teamid、TS.subofficecode、,
实现了TA.AllowID、TA.otherAllownCeid、TA.allowname、TA.minbenchmark、TA.maxbenchmark、COUNT(vfd.DefectsID)
来自Tempts变电站
左连接ts.manufacturingproductid=ta.manufacturingproductid和ts.subofficecode=ta.subofficecode和ta.teamid=ts.teamid上的ta
在ts.subofficeid=aqc.subofficeid和ts.manufacturingproductid=aqc.manufacturingproductid和ts.assemblylineid=aqc.assemblylineid上左连接wms_assemblyqcmapping aqc
左键连接vfd上的wms_vfd。QCStationCode=aqc.QCStationCode和ts.SubstationCode=vfd.MFGStationNum和日期(vfd.CreationDate)='2013-09-24'
其中ta.AllowID=42
按ta.minbenchmark、ta.maxbenchmark、ts.substationid分组

拥有COUNT(vfd.DefectsID)>=ta.minbenchmark和COUNT(vfd.DefectsID)如何运行查询?如果通过PHP,则简化SQL并在PHP读取循环中运行第二个SQL。

更改:

FROM tempsubstation ts
致:


与删除重复项的子查询联接我正在使用临时表,在运行父查询时,我不能在子查询中再次引用它。还有别的办法吗?
FROM (SELECT * FROM tempsubstation
      GROUP BY columnWithDuplicateValues) ts