Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 在单个sql查询中同时使用联接和分组方式_Mysql_Select_Join_Group By - Fatal编程技术网

Mysql 在单个sql查询中同时使用联接和分组方式

Mysql 在单个sql查询中同时使用联接和分组方式,mysql,select,join,group-by,Mysql,Select,Join,Group By,我无法同时使用联接和分组方式: 我搜索了这个…但没有找到解决方案..问题如下: 我有两个表,第一个是带有字段eid、名称和状态的main_表 第二个表是字段fid、eid、上一个_日期、备注和下一个_日期的后续表 第二个表用于存储主表中存储的客户机详细信息的客户机详细信息的后续详细信息,我希望获得每个客户机的最后一个后续记录,所选日期周期为从\u日期到\u日期,并按下一个\u日期降序排序 我使用了下面的查询,但不起作用 SELECT * FROM main_table as MT JOIN

我无法同时使用联接和分组方式: 我搜索了这个…但没有找到解决方案..问题如下:

我有两个表,第一个是带有字段eid、名称和状态的main_表

第二个表是字段fid、eid、上一个_日期、备注和下一个_日期的后续表

第二个表用于存储主表中存储的客户机详细信息的客户机详细信息的后续详细信息,我希望获得每个客户机的最后一个后续记录,所选日期周期为从\u日期到\u日期,并按下一个\u日期降序排序

我使用了下面的查询,但不起作用

SELECT * 
FROM main_table as MT 
JOIN followups as MF on MT.eid=MF.eid 
WHERE MT.status='open' AND MF.NDate<='2012-12-07' 
GROUP BY MF.eid 
ORDER BY MF.next_date DESC
提前感谢…各位

试试这个:

SELECT * FROM main_table AS MT 
LEFT JOIN (SELECT * FROM (SELECT * FROM followups WHERE NDate<='2012-12-07' ORDER BY next_date DESC) AS A GROUP BY eid) AS MF ON MT.eid=MF.eid 
WHERE MT.status='open';
试试这个:

SELECT * FROM main_table AS MT 
LEFT JOIN (SELECT * FROM (SELECT * FROM followups WHERE NDate<='2012-12-07' ORDER BY next_date DESC) AS A GROUP BY eid) AS MF ON MT.eid=MF.eid 
WHERE MT.status='open';

您可以尝试以下方法:

select m.eid,
  m.name,
  m.status,
  f1.last_date,
  f1.remarks,
  f1.next_date
from maintable m
left join
(
  select max(last_date) maxLast, eid
  from followups
  where last_date between from_date and to_date
  group by eid
) f
  on m.eid = f.eid
left join followups f1
  on f.maxLast = f1.last_date
  and f.eid = f1.eid
where m.status='open'
  and f1.next_date<='2012-12-07'
order by f1.next_date desc

您可以尝试以下方法:

select m.eid,
  m.name,
  m.status,
  f1.last_date,
  f1.remarks,
  f1.next_date
from maintable m
left join
(
  select max(last_date) maxLast, eid
  from followups
  where last_date between from_date and to_date
  group by eid
) f
  on m.eid = f.eid
left join followups f1
  on f.maxLast = f1.last_date
  and f.eid = f1.eid
where m.status='open'
  and f1.next_date<='2012-12-07'
order by f1.next_date desc
试试这个

SELECT * FROM main_table AS MT 
LEFT JOIN (SELECT * FROM (SELECT * FROM followups ORDER BY next_date DESC) AS A GROUP BY eid) AS MF ON MT.eid=MF.eid 
WHERE MT.status='open' 
AND MF.NDate<='2012-12-07';
试试这个

SELECT * FROM main_table AS MT 
LEFT JOIN (SELECT * FROM (SELECT * FROM followups ORDER BY next_date DESC) AS A GROUP BY eid) AS MF ON MT.eid=MF.eid 
WHERE MT.status='open' 
AND MF.NDate<='2012-12-07';