我正在尝试执行一个查询来替换多个查询,以生成一个结果集。我得到了一组相当简单的1对1连接,但我试图从一个表中获取一个列,该表为每个主记录保留多个记录。基本上是这样的:
具有一个主键id列和一组其他列meet_entries_statuses的meet_entries,该列具有一个自动增量id列和一个指向meet_entry的id列的外键
对于meet_entries中的每一行,meet_entry_statuses中可能有多行。在我的查询中,我尝试获取与meet_entry主键id相关联的最近添加的行(即最高id号)。
下面是我的问题:
SELECT
meet_entries.id,
member.firstname,
member.surname,
member.gender,
member.dob,
clubs.code,
clubs.clubname,
meet_entries.meals,
meet_entries.massages,
meet_entries.cost,
meet_entries.cancelled,
(SELECT meet_entry_status_codes.description
FROM meet_entry_statuses, meet_entry_status_codes
WHERE meet_entry_statuses.code = meet_entry_status_codes.id
AND meet_entry_statuses.id = meet_entries.id
ORDER BY meet_entry_statuses.id DESC
LIMIT 1) as status,
COUNT(DISTINCT meet_events_entries.id) as entries
FROM meet_entries, meet_events_entries, member, clubs, meet_entry_statuses, meet_entry_status_codes
WHERE meet_entries.meet_id = ?
AND meet_entries.id = meet_events_entries.meet_entry_id
AND meet_entries.member_id = member.id
AND meet_entries.club_id = clubs.id
GROUP BY meet_entries.id
;添加比特:
(SELECT meet_entry_status_codes.description
FROM meet_entry_statuses, meet_entry_status_codes
WHERE meet_entry_statuses.code = meet_entry_status_codes.id
AND meet_entry_statuses.id = meet_entries.id
ORDER BY meet_entry_statuses.id DESC
LIMIT 1) as status,使查询从一秒钟的.2变成永远不会结束。在meet_entries中只有10个匹配的行。meet_entries_statuses中大约有50行与meet_entries中的10行相对应,但正如我所说的,我尝试为每一个meet_entries行只获取1行。有什么建议可以更好地做到这一点?
https://stackoverflow.com/questions/41254667
复制相似问题